エクセルVBAからも パラメータ渡しでExeファイルをコールすることが出来ます。
64ビット版Office対応 2013/11/24
エクセル側の処理
青枠で囲まれたセル内のデータにて
Exeファイル(vba_sub_fib.exe) を起動します。
下図のメッセージは、Exeファイルが表示しています。
(表示データはフィボナッチ数列)
Exeファイルが実行されている間は、エクセルVBAは停止(監視ループ)。
(EXE実行ボタンを無効)
メッセージの「OK」ボタンをクリックすると、エクセルの処理を続行します。
下図のメッセージは、EXEファイルからの戻り値をメッセージボックスを使用して表示。
「OK」ボタンをクリックすると、コマンドボタンを有効にして処理を終了。
以下は、エクセル側のVBAコード
Option Explicit Private Sub cmdPlayExe_Click() Dim ExeName As String '実行ファイル名 Dim strParam(3) As String 'パラメータ Dim strRc As String '関数からの戻り値 On Error GoTo MyErr ' ' 書式: CallExe(strPath,strParam_1,strParam_2,・・・strPamar_n) ' ' strPath: Exeファイルのパス(絶対パス) ' strParam_1〜n: パラメータ(任意の個数) ' ExeName = Range("EXE_NAME").Value 'EXEファイル名 strParam(1) = Range("FIB_COUNT").Value '求める個数 strParam(2) = Range("FIB_F0").Value '初期値 f0 strParam(3) = Range("FIB_F1").Value ' f1 strRc = CallExe(ThisWorkbook.Path & "\" & ExeName, _ strParam(1), _ strParam(2), _ strParam(3)) MsgBox "戻って来た値をエクセルで表示" & String(2, vbCrLf) & strRc, vbOKOnly, "戻り値の表示" GoTo MyEnd MyErr: 'エラー処理 MsgBox Err.Number & " " & Err.Description MyEnd: On Error GoTo 0 End Sub
実際には、かなり面倒な処理を行っていますが、
EXEファイルの呼び出し手続き、戻り値の取得部分などは、全て関数化していま す。
もろもろの手続き部分は、標準モジュール「modCallExe」の中で定義。
他のブックで証する場合は、「modCallExe」の中身をコピーして持っていって下さい。
(もしくは、エクスポート/インポートします。)
サ ンプルファイルのダウンロード