関数:コマンドラインの起動

TOP > サンプル/関数 > *


IMG_2451

機能

コマンドラインを起動するVBA関数です。

起動されたアプリの終了を待ちます。終了コード、標準出力、標準エラー出力も取得します。

 

形式

 

引数

In:関数の呼び出し側でセットする項目

Out:VBA関数側から返される項目

  1. 第1引数:strInCommand As String  (In)

    Dos上で実行するコマンドラインの文字列

  2. 第2引数:strInWorkFolder As String  (In)

    一時的な作業フォルダ。空白時はExcelファイルの実行フォルダを使う。

  3. 第3引数:lInErrCount As Long (In)

    コマンドラインの終了を判定する終了コードの数。
    無指定時は-1をセット。

  4. 第4引数:lInErrCode() As Long  (In)

    コマンドラインの終了を判定する終了コードを配列にセット。
    判らない時はlInErrCountに-1をセット。

  5. 第5引数:strOutFile() As String  (Out)

    コマンドラインの実行結果がセットされる。
    strOutFile(0):標準出力の内容
    strOutFile(1):標準エラー出力の内容

  6. 第6引数:strOutErrMsg  (Out)

    関数内のエラーメッセージ。エラー無しは ""。

  7. 第7引数:lOutRetCode As Long  (Out)

    コマンドラインの終了コードがセットされる。

 

戻り値

  1. True : 正常処理
  2. False : 異常処理

    strOutErrMsg  の内容を確認する。

 

関数の正常、エラーの判定

  1. RunCommandLineEX の戻り値はプログラム内部のエラー判定に使われるだけです。これにFalseが返されるとstrOutErrMsgにエラーメッセージがセットされます。True が返されてもコマンドラインが正常終了したとは限りません。コマンドライン・アプリの実行結果とは関係無いです。
        
  2.   コマンドラインの実行結果は
    strOutFile(0):標準出力
    strOutFile(1):標準エラー出力
    の内容をチェックします。
        

    •  標準エラー出力が有るからといってエラーとは限りません。

      理由:正常処理の結果を標準エラー出力側に出すアプリも有るからです。

    • 標準出力だけが有るからといって正常終了とは限りません。

      理由:エラーメッセージを標準出力側に出力するアプリも有るからです。オプションの記述ミスを「--help」扱いで標準出力に出す傾向が有ります。

 






VBAサンプル

Popplerpdfinfo.exe をコマンドライン起動して PDFファイルの各種の文書情報を取得します。

  • 終了コードが 0 , 1 , 2 , 3 , 99 で返されたら終了と判断します。
  • 作業フォルダは起動Excelファイルのフォルダとします。
  • オプションは「-box」。

DownloadcLine-RunCommandLineEX.xls

 

実行結果

 

備考

  • 標準出力、標準エラー出力共にUTF-8のテキストなっています。よってVBA内部に読み込む時は ADODB.Stream を使ってコード変換をしています。
  • 実行結果の CreationDate と ModDate で一部が文字化けを起こしています。文字化けをしないで読み込むにはCON_READ = Flase にして②のロジックで読み込む必要が有ります。

 

技術メモ

  • 標準出力は「xxx.exe  >  out.txt」でテキスト出力出来ます。
  • 標準エラー出力は「xxx.exe  2>  out.txt」でテキスト出力出来ます。
  • コマンドラインの終了コードは WindowsAPI GetExitCodeProcess の第二引数で取得できます。
  • コマンドラインの実行中時の終了コードは 259 でした。

 

動作確認環境

  • Windows 10 64bit Pro  +  Excel 2007 (SP3)

 

< サンプル/関数へ戻る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン