まりふのひと

Windows7&Excel2010&Access2003で開発したExcel VBAが、Access2010の環境では動かない...

Windows7上のAccess2003で、Excel2010の xlsm から「得意先かな」というフォームを開くモジュールを作成した。

Sub aa_Access得意先かなを開く()
Dim mdbFullPath As String

    mdbFullPath = ThisWorkbook.Path & "\" & MDBName
    With CreateObject("Access.Application")
        .Visible = True         '非表示にしたい場合はFalse
        Call .OpenCurrentDatabase(mdbFullPath)
        Call .Run("得意先かなを開く")
    End With
End Sub


意気揚々とデモったところ、

  1. Windows7/Excel2007/Access2003 のパソコンでは‥‥ 成功!
  2. Windows7/Excel2007/Access2007 のパソコンでは‥‥ 瞬間的にAccessが開き、直ぐ閉じる=失敗。
  3. Windows7/Excel2013/Access2007 のパソコンでは‥‥ 瞬間的にAccessが開き、直ぐ閉じる=失敗。

意気消沈し帰宅。

  • デスクトップのAccess2003 を 2010 にアップデートし、
  1. Windows7/Excel2010/Access2010で)テスト‥‥ 瞬間的にAccessが開き、直ぐ閉じる=失敗。


ググって、ググって、Accessで動かす方式? に作り変えた。

Sub aa_Access得意先かなを開く()
Dim mbTitle As String
Dim objAccess As Object

        'Accessのアプリケーションオブジェクトを作成する
    Set objAccess = CreateObject("Access.Application")
        'mdbを開く
    objAccess.OpenCurrentDatabase ThisWorkbook.Path & "\" & MDBName
        'フォームを開く
    objAccess.DoCmd.OpenForm "F_得意先かな", 3          'acFormDS ではコンパイルエラーになる。
    objAccess.Visible = True        'Accessを表示on
    objAccess.UserControl = True    'その後、ユーザーに操作させる
    
    Set objAccess = Nothing

End Sub

一応 動くようになったが、Accessのフォームが後ろに隠れ、タスクボタンが点滅することが嗚多い。そのような場合、タスクボタンをクリックし前に出す必要がある。