Exeコール from Excel】 エクセルVBAから作成済みEXEをパラメータ渡しで実行 
エクセルVBAからも パラメータ渡しでExeファイルをコールすることが出来ます。
  64ビット版Office対応 2013/11/24

サ ンプルファイルのダウンロード

エクセル側の処理

青枠で囲まれたセル内のデータにて
Exeファイル(vba_sub_fib.exe) を起動します。

下図のメッセージは、Exeファイルが表示しています。
(表示データはフィボナッチ数列)

Exeファイルが実行されている間は、エクセルVBAは停止(監視ループ)。
(EXE実行ボタンを無効)



EXEファイルの起動

メッセージの「OK」ボタンをクリックすると、エクセルの処理を続行します。

下図のメッセージは、EXEファイルからの戻り値をメッセージボックスを使用して表示。


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

サ ンプルファイルのダウンロード







標準モジュール