VBA関数
Command関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
公開日:2013年5月以前 最終更新日:2025-06-15

Command関数


Command関数は、VBAアプリケーションが起動されたときに指定されたコマンドライン引数を取得するために使用されます。
これにより、アプリケーションの起動時に外部から渡された情報に基づいて、処理を分岐させたり、設定を読み込んだりすることが可能になります。



Command関数の構文

Command

引数はありません。

解説・制限事項等
  • Command 関数は、アプリケーション起動時にコマンドラインで渡された引数をString型で返します。
  • コマンドライン引数とは、アプリケーションの実行ファイル名に続けてスペース区切りで記述される追加のパラメータのことです。
    • 例: excel.exe "C:\MyWorkbook.xlsm" /myarg "value with spaces"
    • この例の場合、Command関数が返す値は /myarg "value with spaces" となります(Excel自体が処理するファイルパスは含まれません)。
  • 戻り値には、アプリケーション名とファイル名(Excelファイルなど)は含まれません。VBAプロジェクトが実行されるアプリケーション(例: Excel、Accessなど)に渡された、VBAが利用できる引数のみが含まれます。
  • コマンドライン引数が指定されていない場合、Command関数は長さ0の文字列("")を返します。
  • 複数の引数がスペースで区切られている場合、Command関数はそれらすべてを一つの文字列として返します。個々の引数を解析するには、Split関数やInStr、Midなどの文字列操作関数を使用する必要があります。
  • Command関数は、VBAプロジェクトが単独で実行される場合(例: exeファイルとしてコンパイルされた場合)や、特定のOfficeアプリケーション(Excel, Accessなど)がコマンドライン引数を受け取るように設定されている場合に利用できます。

Command関数の使用例

次のコード例は、Command 関数を使ってコマンドライン引数を取得し、その内容をメッセージボックスに表示します。

' このSubプロシージャは、通常、ブックが開かれた際などに自動実行されるように設定します。
' 例: Workbook_Open イベントや、マクロの自動実行設定など

Sub ShowCommandArgs()

  Dim cmdArgs As String
  
  ' Command関数でコマンドライン引数を取得
  cmdArgs = Command
  
  If cmdArgs = "" Then
    MsgBox "コマンドライン引数は指定されていません。", vbInformation, "Command 関数例"
  Else
    MsgBox "取得されたコマンドライン引数:" & vbCrLf & cmdArgs, vbInformation, "Command 関数例"
    
    ' 例: 取得した引数から特定のオプションを解析
    ' この解析は非常に簡易的なものです。より堅牢な解析にはSplit関数や正規表現を使用します。
    If InStr(cmdArgs, "/debug") > 0 Then
      MsgBox "デバッグモードで起動されました。", vbInformation, "Command 関数解析"
    ElseIf InStr(cmdArgs, "/mode:report") > 0 Then
      MsgBox "レポートモードで起動されました。", vbInformation, "Command 関数解析"
    End If
  End If
  
End Sub

【このVBAコードの実行方法】
このVBAコードを実際に動作させるには、ExcelなどのVBAプロジェクトを、コマンドライン引数を付けて起動する必要があります。
  1. VBAコードを記述したExcelファイル (.xlsmなど) を作成し、上記 ShowCommandArgs プロシージャを標準モジュールに貼り付けて保存します。
  2. Excelファイルを閉じます。
  3. コマンドプロンプトを開くか、またはバッチファイル(.bat)を作成して実行します。

    例:バッチファイル (RunExcelWithArgs.bat のような名前で保存)
    "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" "C:\Users\YourUser\Documents\YourWorkbook.xlsm" /option1 value1 /debug /mode:report
    REM 上記のパスは、ご自身のExcelのインストールパスとVBAファイルパスに置き換えてください。
    REM 例: "C:\Program Files\Microsoft Office\OfficeXX\EXCEL.EXE" "C:\パス\対象ファイル.xlsm" ...
    • EXCEL.EXEのパスは、お使いのOfficeバージョンによって異なる場合があります。
    • YourWorkbook.xlsmは、このVBAコードを記述したExcelファイルの名前です。
  4. 作成したバッチファイルをダブルクリックして実行します。
    Excelが起動し、ShowCommandArgsプロシージャが実行され、コマンドライン引数の内容がメッセージボックスで表示されるはずです。

解説:
  • このコードでは、Command 関数を呼び出すだけで、起動時に渡されたすべてのコマンドライン引数が文字列として cmdArgs 変数に格納されます。
  • If cmdArgs = "" Then で、引数が渡されたかどうかをチェックしています。
  • 引数が存在する場合、MsgBox でその内容を表示します。
  • 続いて、InStr 関数を使って、取得した文字列の中に特定のオプション(例: /debug や /mode:report)が含まれているかを簡易的にチェックする例を示しています。実際のアプリケーションでは、これらの引数をより詳細にパース(解析)して、それに応じた処理を実行します。


※本記事の作成にあたっては、生成AI(Gemini)を活用し一部の文章作成を行っています。最終的な内容は人間による確認・編集を経て掲載しています。


Office VBA リファレンス Command関数

※VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……



同じテーマ「VBA関数」の記事

Oct関数
Rnd関数
Round関数
Command関数
CreateObject関数
DoEvents関数
Environ関数
GetObject関数
IMEStatus関数
InputBox関数
MsgBox関数


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ