他のアプリケーションなどの実行可能なプログラムをAccessから実行する時は、
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ステートメントで指定する動作に対するキーのコードは
ヘルプを参照してください。
|