この記事では、Accessから別のAccessファイルを開くためのVBAコードと、その設定方法について詳しく解説します。
Accessから別のAccessファイルを開く方法
以下、現在起動中のAccessファイルから別のAccessを独立した状態で起動するVBAサンプルコードです。
この方法はShellで別プロセスとして起動するため、起動元のAccessを終了しても後から開いたAccessは一緒に終了しません。
Shellを使用して別のAccessを実行するサンプルコード
Shellの構文は以下の通りです。
Shell("コマンドライン文字列", 窓のスタイル)
'または
Shell "コマンドライン文字列", 窓のスタイル
以下のサンプルコードでは、呼び出し元のACCESSファイルと同じディレクトリにある「 別ファイル.accdb 」を呼び出しています。
全く別のディレクトリにあるファイルを開く場合は Application.CurrentProject.path ではなくフルパスで指定します。
Sub OpenAccessFileWithShell1()
Dim strAppName As String
strAppName = "MsAccess.exe " & Application.CurrentProject.path & "\別ファイル.accdb"
Call Shell(strAppName, 1)
End Sub
Sub OpenAccessFileWithShell2()
Dim strFilePath As String
strFilePath = "C:\YourPath\別ファイル.accdb" '開きたいファイルのパス
Shell "MsAccess.exe """ & strFilePath & """", vbNormalFocus
End Sub
応用編
開いたACCESSファイルにパラメータを渡すには?
外部のAccessファイル実行時に、パラメータを渡したい場合はファイル名の後に /cmd パラメータ という形で指定します。
Dim strAppName As String
strAppName = "MsAccess.exe C:\別ファイル.accdb /cmd 123"
Call Shell(strAppName, 1)
特定のフォームを自動で開くには?
以下のコードは、指定したAccessファイルを開き、特定のフォームを自動で表示させる方法です。
Sub OpenAccessFileAndForm()
Dim strFilePath As String
Dim strCommandLine As String
strFilePath = "C:\YourPath\AnotherFile.accdb"
strCommandLine = "MSACCESS.EXE """ & strFilePath & """ /cmd OpenMyForm"
Shell strCommandLine, vbNormalFocus
End Sub
Accessファイル内の設定
- 起動時にVBAでコマンド引数を確認し、対応するフォームを開くようにします。
Private Sub Form_Load()
If Command = "OpenMyForm" Then
DoCmd.OpenForm "YourFormName"
End If
End Sub
エラー回避のためのポイント
ファイルパスが正しいか確認する
- パスが間違っているとファイルが開けません。ファイルが存在するか事前にチェック処理を入れておくことをお勧めします。
Dir関数を使ったチェック
Dir
関数を使うと、指定したパスにファイルが存在するかどうかを簡単に確認できます。
Sub CheckAndOpenAccessFile()
Dim strFilePath As String
strFilePath = "C:\YourPath\AnotherFile.accdb" ' 開きたいファイルのパス
' ファイルの存在チェック
If Dir(strFilePath) <> "" Then
' ファイルが存在する場合、開く
FollowHyperlink strFilePath
Else
' ファイルが存在しない場合、エラーメッセージを表示
MsgBox "指定したファイルが見つかりません 。" & strFilePath, vbExclamation, "エラー"
End If
End Sub
ファイルパスの取得を工夫する
- 現在のディレクトリを基準にファイルを開く場合は
Application.CurrentProject.Path
を活用することで環境による誤差を吸収できることがあります。
Dim strFilePath As String
strFilePath = Application.CurrentProject.Path & "\AnotherFile.accdb"
Accessがインストールされていることを確認
Shell
関数を利用する場合、MSACCESS.EXE
のパスがシステムの環境変数に含まれている必要があります。
ファイルがロックされていないことを確認
- 他のユーザーが同時に使用している場合はエラーになることがあります。
まとめ
Microsoft Accessを使用したデータベース管理では、他のAccessファイルを開く機能が非常に便利です。Shell
を活用することで、簡単に他のファイルを操作できます。さらに応用例としてフォームの自動表示などを加えることで、より柔軟なシステム構築も可能です。