• ベストアンサー

AccessからExcelVBAのモジュールを呼び出したい

AccessからExcelVBAのモジュールをキックし、実行する方法はあるでしょうか。 プロシージャを指定して実行さえできれば良いのですが・・・ 呼び出し元はAccessのマクロ・AccessVBAどちらでも構いません。 どちらでもできるのであれば、両方のやり方を教えていただけるとありがたいです。

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

  • ベストアンサー
  • tkun62
  • ベストアンサー率23% (37/159)
回答No.1

VBAです。下記を参考にして下さい。 ============================================================ DoCmd.SetWarnings False Set App = CreateObject("Excel.Application") App.Workbooks.Open "C:\テスト用.xls" Set Book = App.Workbooks(1) Set Sheet = App.ActiveSheet Book.Application.Visible = True App.Run "Macro1" App.DisplayAlerts = False Book.SaveAs Filename:= _ "C:\テスト用変更後.xls", FileFormat:=xlNormal _ , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False DoCmd.SetWarnings True Set Sheet = Nothing Set Book = Nothing MsgBox "作成完了" ============================================================

その他の回答 (1)

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

こんにちは。 Access VBA OLE接続です。Access マクロでは、Excel側に自動起動マクロを作らなくてはならないです。 これは、Excelが既に立ち上がっている場合は、それを利用しますが、立ち上がっていなければ、目的のブックをオープンします。ただし、これは、VBAのみです。 '標準モジュールのほうがよい  Sub Acc2ExcelMacro()  Dim xlApp As Object   Dim xlBook As Object   Dim myPath As String   Dim OpenFlg As Boolean   '*****ユーザー設定*****   'ブック名   Const MYBOOK As String = "Excel_B.xls"   'マクロ名   'Excelのマクロは、標準モジュールにあること   Const MYMACRO As String = "FromAccess"     'Excelのブックは、mdbファイルと同じ場所の場合     myPath = CurrentProject.Path  '***********************     On Error Resume Next   Set xlApp = GetObject(, "EXCEL.Application")   If Err.Number > 0 Then    'ブックが開いていないとき    Set xlApp = CreateObject("Excel.Application")    Set xlBook = xlApp.Workbooks.Open(myPath & "\" & MYBOOK)     xlApp.Visible = True   Else    OpenFlg = True   End If   On Error GoTo 0   On Error GoTo ErrHandler   If xlApp.ActiveWorkbook.Name <> MYBOOK Then    '違うブックが開いていたとき    OpenFlg = True    Set xlBook = xlApp.Workbooks.Open(myPath & "\" & MYBOOK)    xlApp.Visible = True   Else    Set xlBook = xlApp.ActiveWorkbook   End If   xlApp.UserControl = OpenFlg     xlApp.Run "'" & MYBOOK & "'!" & MYMACRO  '引数が必要なら、, をつけて続ける     If OpenFlg = False Then   '違うブックを開いていたときは、Applicationを終了しない。   'この設定では、自動保存はしない。必要な場合は、マクロ側にさせる。    xlBook.Close False    xlApp.Quit   End If   Set xlBook = Nothing ErrHandler:   If Err.Number > 0 Then    MsgBox Err.Number & ":" & Err.Description   End If   Set xlApp = Nothing End Sub

関連するQ&A