Excel VBAから Access(mdb)のプロシージャ(Sub)を呼び出すことに成功した

インターネットに載っていたサンプルを試した結果、最終的には Yahoo!知恵袋にあった「エクセルからアクセスのマクロを実行し 更にエクセルマクロを実行したいのですが...」で上手く動いた。


 Accessmdb)のフォームを開く
事前に Accessで、下記を行った

  1. 起動時の設定 ‥‥ 右図
  2. フォームの作成
    • データシートの単純なフォーム。Excel風にするため。
  3. マクロの作成
    • フォームを「データシート ビュー」で開くため。
  4. モジュールの作成
    • マクロを実行するため、一行のコード。
      1. Sub フォームを開く()
      2.   DoCmd.RunMacro (マクロ名)
      3. End Sub

 
ExcelVBA

  1. mdbFullPath = ThisWorkbook.Path & "\" & MDBName
  2. With CreateObject("Access.Application")
  3. .Visible = True     '非表示にしたい場合はFalse
  4. Call .OpenCurrentDatabase(mdbFullPath)
  5. Call .Run("フォームを開く")
  6. '    Call .CloseCurrentDatabase
  7. '    Call .Quit
  8. End With

    • No.5 では Sub の名前を入れる。
    • No.6〜7 は、「Accessは(入力終了後)手で閉じる」ため、コメントアウトした。


 今日の結論

  • Accessのマクロを動かす」も行ったが、手順は上記と全く同じで
    1. マクロを動かすモジュールを作る
    2. Excel からは Sub を呼び出す 方法で対応した。
  • Accessのマクロを動かす」では、マクロの最後のアクションに[終了]を入れたがエラーになった。
    • アクション[終了]を取ったら、Access が終了し、Excel に戻った!!!
  • 上記コードの No.6〜7 は、要らないのかも...(生かした時どうなるかは未確認)