即効テクニック |
●詳細● 他のアプリケーションなどの実行可能なプログラムを実行する時は、Shell関数を使います。 サンプルでは、テーブル「住所録」のフィールド名をすべて取得してShell関数で起動したノートパッドに出力しています。 出力は、SendKeysステートメントを使います。SendKeysステートメントは、キーストロークまたはキーストロークの組み合わせを、キーボードから入力したときと同様にアクティブウィンドウに渡します。 ●サンプル● Sub test() Dim db As Database Dim tdf As TableDef Dim fld As Field Dim myID As Variant Dim myMsg As String On Error GoTo err_rtn Set db = CurrentDb Set tdf = db.TableDefs!住所録 For Each fld In tdf.Fields myMsg = myMsg & fld.Name & Chr(13) Next myID = Shell("C:\Windows\Notepad.exe", 1) SendKeys myMsg, True Exit Sub err_rtn: MsgBox "ノートパッドが起動できませんでした" End Sub ●補足説明● (1)Shell関数の構文は次のとおりです。 <構文>Shell(pathname[,windowstyle]) 引数pathnameには、パスを含めたプログラム名を指定します。 引数windowstyleには、実行するプログラムのウィンドウの状態を指定します。 指定できる定数と内容は次のとおりです。 定数 値 内容 vbHide 0 フォーカスを持ち、非表示にされるウィンドウ vbNormalFocus 1 フォーカスを持ち、元のサイズと位置に復元される ウィンドウ vbMinimizedFocus 2 フォーカスを持ち、最小化表示されるウィンドウ vbMaximizedFocus 3 フォーカスを持ち、最大化表示されるウィンドウ vbNormalNoFocus 4 最後にウィンドウを閉じたときのサイズと位置に復元 されるフォーカスを持たないウィンドウ。現在アクティブ なウィンドウは、アクティブのままです。 vbMinimizedNoFocus 6 最小化表示されるフォーカスを持たないウィンドウ。 現在アクティブなウィンドウは、アクティブのままです。 (2)ノートパッドが存在するパスは確認してください。 (3)SendKeysステートメントで指定する動作に対するキーのコードは ヘルプを参照してください。