• ベストアンサー

<ACCESS VBA -> EXCEL>getObjectしたEXCELファイルのシートを指定したい

ACCESSのVBAマクロでEXCELファイルを指定してデータを取得しようとしています。 GetObject("C:\ファイル名.xls", "Excel.Sheet") でEXCELファイルを取得するまでは良いのですが、そのファイルのシートを指定する方法がわかりません。 基本かもしれませんが、ご教示をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 Accessで使っているとき、マクロ側でExcelが起動されていることがあるのでしたら、GetObjectも考慮に入れたほうがよいのかもしれませんね。 それを考慮しなければ、オートメーション・オブジェクトは、 Set xlApp = CreateObject("Excel.Application") だけでよいです。 'GetObject をお使いの場合は、 Dim xlApp As Object Const MYPATH As String = "○○○" Const FILENAME As String ="××××" ' 'オートメーション・オブジェクトの生成 On Error Resume Next  Set xlApp = GetObject(, "Excel.Application") '起動済Excelの取得   If TypeName(xlApp) = "Empty" Then     '起動済Excelが無い時新規作成    Set xlApp = CreateObject("Excel.Application")   End If On Error goto 0 ' xlApp.Visible = True 'どちらでも可 With xlApp.Workbooks.Open(MYPATH & "\" & FILENAME)  .Worksheets("Sheet1").Select  '作業  .Close False End With '以下を忘れると、後々、悲惨なフリーズの原因です。 Set xlApp = Nothing ' でも、 例えば、Excelを開いて加工するのでなければ、このような方法もありかと思います。(myTableにインポートする) DoCmd.TransferSpreadsheet acImport, , "myTable", MYPATH & "\"FILENAME", True, "Sheet1!A1:D50 '

Yupa3
質問者

お礼

詳細な説明ありがとうございます。 複数のファイルからデータを集めてデータベース化するマクロを作っています。 下のデータが全くTableを意識したフォーマットになってないので、隠せるから一つづつ値をとる方法をとってます・・・。 #本題からはそれますが、実は一つ目のファイルを開いた後二つ目を開こうとしたところでエラーが出て頭を抱えてます。Set xlApp = Nothingはちゃんとしてるのですけど・・・。 エラーメッセージは以下のとおり。 実行時エラー'7' メモリーが不足しています。 もともとDDEでデータを取っていたのですが、ファイルが開きっぱなしになるのと、他でGetObjectを使っているので全体的な統一を取るためにGetObjectで書き直しをしてます。

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Open Filename:="C:\ファイル名.xls" 'EXCELファイルをオープン oApp.Worksheets("sheet1").Select 'sheet1を指定する 通常はこんな感じですが

Yupa3
質問者

お礼

ありがとうございます。m(_ _)m GetObjectでも同じようですね。

関連するQ&A