• ベストアンサー

AccessでExcelのマクロを実行させたい

WinXpでAccess2002を使用しています。 今、Accessのマクロで、ExcelのAファイルを出力させましたが、この後、続けて、以降の処理を行うにはどのように記述すれば良いでしょうか? (1)ExcelのAファイルを開く。 (2)AファイルのマクロA-1を実行させる。

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

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

こんばんは。 >ExcelのAファイルを出力させましたが、この後、続けて、以降の処理を行うにはどのように記述すれば良いでしょうか? Aファイルの出力の仕方が、Access マクロで、ブックが開いている状態なら、GetObject を使い、単独で開くなら、CreateObject になります。 Sub AccTestMacro()   Dim xlApp As Object   Dim xlBook As Object   Const MYBOOK As String = "C:\A.xls"   Set xlApp = CreateObject("Excel.Application")   'Set xlApp = GetObject(,"Excel.Application") '開いた状態   Set xlBook = xlApp.Workbooks.Open(MYBOOK)   xlApp.Visible = True   xlApp.Run "'" & MYBOOK & "'!A-1"   'xlBook.Save '変更を加えたのなら、保存する   xlBook.Close False   Set xlApp = Nothing End Sub 後は工夫してください。

kao1031
質問者

お礼

ご丁寧にありがとうございました。

kao1031
質問者

補足

早速ご回答ありがとうございました! ブックが開いた状態から、続けたいので、GetObjectを使うのですね。 ただ、全くの素人なので、再度お聞きしたいのですが、上記のVBAですが、Accessのマクロで、ファイル出力後にビルド記述すると言う事で宜しいでしょうか?申し訳ありませんが宜しくお願いします。

その他の回答 (1)

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

こんばんは。Wendy02です。 >ブックが開いた状態から、続けたいので、GetObjectを使うのですね。 Excelのブックが開いた状態なら、GetObjectです。そのほうが確かです。ただし、GetObjectは、ブックが開いていないとエラーが出ますので、以下のようにOn Error トラップします。 そして、例えば、コマンドボタンでしたら、コードビルダで、以下のようになるかと思います。(思い当たる他のエラー処理は、施してありますので、Resume で戻る必要はありません。) Private Sub コマンド1_Click()   Dim xlApp As Object   Dim xlBook As Object   Const MYBOOK As String = "C:\A.xls" 'ブック名   If Dir(MYBOOK) = "" Then MsgBox "ファイルが見つかりません。", 16: Exit Sub   On Error Resume Next   Set xlApp = GetObject(, "EXCEL.Application")   If Err() =429 Then    Set xlApp = CreateObject("Excel.Application")   End If   Set xlBook = xlApp.Workbooks.Open(MYBOOK)   xlApp.Visible = True   xlApp.Run "'" & MYBOOK & "'!A-1"   xlBook.Save '保存する   xlBook.Close False   xlApp.Quit   Set xlBook = Nothing   Set xlApp = Nothing End Sub 適当に加工してください。

kao1031
質問者

お礼

ご丁寧にありがとうございました。 早速やってみます。

関連するQ&A