エクセル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」の中身をコピーして持っていって下さい。
(もしくは、エクスポート/インポートします。)
サ ンプルファイルのダウンロード