Attribute VB_Name = "Module1" '■ マクロ500連発<第2段> ' ' ACCESSのマクロをSHELL関数を使って実行する ' ' Copyright(C) 2000 Sunago ' '  このマクロはShell関数を使ってACCESSを起動し、マクロを ' 実行するために作成しました。ACCESSのMDBファイルにパスワード ' が設定されている場合は、コメントを解除し、Shell関数直後に ' MDBファイルに一定時間置いた後にキーを送出してください。 ' パスワードをキー送出する場合は、Accessの動作を見えなく ' することはできません。 ' ' ※このマクロを実行には、ACCESS97以降が必要です ' (ACCESS95以前のmdbファイルは用意しておりません)。 Option Explicit Sub Macro1() Dim retval Dim strcmd As String 'バージョンをチェックして、コマンド文字列を編集する If VerNo = 8 Then 'EXCEL97&ACCESS97 strcmd = "MSACCESS.EXE " & _ Path(ThisWorkbook.Path) & "257db_97.mdb " & _ "/x Macro1.Syori /nostartup" ElseIf VerNo = 9 Then 'EXCEL2000&ACCESS2000 strcmd = "MSACCESS.EXE " & _ Path(ThisWorkbook.Path) & "257db_2000.mdb " & _ "/x Macro1.Syori /nostartup" End If 'SHELL関数を使って、ACCESSを起動する ' ' ACCESSのStartUpコマンドラインオプション ' /x マクロ名 ※マクログループ名[.マクロ名] ' /nostartup ※スタートアップダイアログを表示しない ' retval = Shell(strcmd, vbNormalFocus) 'MDBのパスワードをキー送信する 'Application.Wait (Now() + CDate("00:00:03")) 'PCの性能に合わせて調整 'SendKeys "ABC{ENTER}", True 'MDB Password End Sub '/* パスの終わりを\にする関数 */ Function Path(arg1) As String If Right(arg1, 1) = "\" Then Path = arg1 Else Path = arg1 & "\" End If End Function '/* EXCELのバージョンを取得する関数 */ Function VerNo() As Integer Dim strver As String strver = Application.Version VerNo = Int(Left(strver, InStr(strver, ".") - 1)) End Function