【VBA】コマンドプロンプト(DOSコマンド)を実行する方法 (WScript.Shell)

目次

はじめに

VBAマクロから、ファイルの一覧をテキストに出力する dir コマンドや、ネットワーク設定を確認する ipconfig コマンドといった、古くからある**コマンドプロンプト(DOSコマンド)**を実行したい場面があります。

VBAから WScript.Shell オブジェクトを利用することで、これらのコマンドラインツールを呼び出し、その機能を活用することが可能です。この記事では、VBAからコマンドプロンプトのコマンドを実行するための、基本的で確実な方法を解説します。


コマンドプロンプトのコマンドを実行するVBAサンプルコード

このマクロは、ipconfig コマンドを実行し、その結果をデスクトップ上の ip_config.txt という名前のテキストファイルに出力します。

完成コード

' コマンドプロンプトのコマンドを実行し、結果をファイルに出力する
Sub RunDosCommand()
    Dim shellObj As Object
    Dim commandText As String
    Dim outputPath As String
    
    '--- 1. WScript.Shellオブジェクトを作成 ---
    Set shellObj = CreateObject("WScript.Shell")
    
    '--- 2. 出力先のパスと、実行したいコマンドを準備 ---
    ' SpecialFolders("Desktop")で、デスクトップのパスを動的に取得
    outputPath = shellObj.SpecialFolders("Desktop") & "\ip_config.txt"
    
    ' ipconfigの結果をリダイレクト(>)でテキストファイルに出力するコマンド
    commandText = "ipconfig > " & outputPath
    
    '--- 3. コマンドを実行 ---
    ' 第2引数 0 で、コマンドプロンプトのウィンドウを非表示にする
    ' 第3引数 True で、コマンドの完了を待つ
    shellObj.Run "%ComSpec% /c " & commandText, 0, True
    
    '--- 4. 後片付けと通知 ---
    Set shellObj = Nothing
    MsgBox "コマンドを実行し、結果をデスクトップに出力しました。"

End Sub

実行結果

マクロを実行すると、デスクトップに ip_config.txt ファイルが作成され、中に ipconfig の実行結果が書き込まれます。


コードの解説

Set shellObj = CreateObject("WScript.Shell")

Windowsのシェル機能(プログラムの実行など)をVBAから操作するための WScript.Shell オブジェクトを生成しています。

shellObj.Run "%ComSpec% /c " & commandText, 0, True

この一行が、コマンドを実行する核心部分です。

  • .Run: プログラムやコマンドを実行するメソッドです。
  • "%ComSpec% /c ": これはおまじないとして覚えておくと便利です。
    • %ComSpec%: コマンドプロンプトの実行ファイル(cmd.exe)の場所を示す環境変数です。
    • /c: 後ろに続くコマンドを実行した後に、コマンドプロンプトのウィンドウを閉じるためのスイッチです。
  • commandText: 実際に実行したいコマンドラインの文字列("ipconfig > C:\...)を渡します。
  • 第2引数 (0): ウィンドウの表示スタイルです。0 を指定すると、コマンドプロンプトの黒い画面が非表示のまま実行されます。
  • 第3引数 (True): コマンドの実行が完了するまで、VBAの処理を待機させるかどうかを指定します。True にすると、ファイルへの書き込みが終わるまで待ってから、次の MsgBox の行に進みます。

まとめ

今回は、WScript.Shell オブジェクトを使って、VBAからコマンドプロンプトのコマンドを実行する方法を解説しました。

  • WScript.Shell オブジェクトの .Run メソッドを使う。
  • コマンドの前に "%ComSpec% /c " を付けるのが定石。
  • .Run の第2、第3引数を指定することで、ウィンドウを非表示にしたり、処理の完了を待ったりできる。

この方法を使えば、VBAだけでは実装が難しい、あるいは面倒な処理(ファイルシステムの高度な操作、ネットワークコマンドの実行など)を、既存のコマンドラインツールを呼び出すことで、手軽に実現できます。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次