前提
「Windows Script Host Object Model」を参照設定しなくとも動作するよう、CreateObject関数を使用して必要なオブジェクトを取得する
※他のPC上で実行する際、参照設定が原因で上手く動作しないことがあるため
サンプルプログラムの概要
・「cdコマンド」を実行しINPUTフォルダへ移動する
・「copyコマンド」を実行し3つテキストファイルを結合する
・配列へ3つのテキストファイル名を格納し、Join関数により文字列結合する
・文字列結合時のデミリタは「 + 」とする
サンプルプログラム
'変数の宣言を必須
Option Explicit
Sub promptCommandExeSample()
Dim inputFolder As String
Dim outputFolder As String
Dim arrInputFile(2) As String
Dim command As String
'Dim count As Integer
Dim wsh As Object
Dim result As Object
'INPUTフォルダを設定
inputFolder = "C:\Users\user\Desktop\input"
'OUTPUTフォルダを設定
outputFolder = "C:\Users\user\Desktop\output"
'INPUTファイルを配列に格納
arrInputFile(0) = "input1.txt"
arrInputFile(1) = "input2.txt"
arrInputFile(2) = "input3.txt"
'実行するコマンドを設定(INPUTフォルダへ移動、copyコマンドを設定)
command = "cd " & inputFolder & " & copy /b "
'結合対象のinputファイルをコマンドへ追加(繰り返しで追加する方法)
'For count = 0 To UBound(arrInputFile)
' '最後の要素でない場合は「+」を追加
' If count <> UBound(arrInputFile) Then
' command = command & arrInputFile(count) & " + "
' Else
' command = command & arrInputFile(count) & " "
' End If
'Next count
'結合対象のinputファイルをコマンドへ追加(Join関数で追加する方法)
command = command & Join(sourceArray:=arrInputFile, delimiter:=" + ")
'outputファイルをコマンドへ追加
command = command & " " & outputFolder & "\outputFile.txt"
'コマンドを実行(Runメソッド)
'vbHideでコマンドプロンプト画面を非表示
'Trueで同期(コマンドが完了するまで制御が戻らない)
Set wsh = CreateObject("WScript.Shell")
wsh.Run "%ComSpec% /c " & command, vbHide, True
'コマンドを実行(Execメソッド)
'Set result = wsh.Exec("%ComSpec% /c " & command)
'コマンドの実行が終わるまで待機
'Do While result.Status = 0
' DoEvents
'Loop
'後片付け
Set result = Nothing
Set wsh = Nothing
End Sub