前提・実現したいこと
VBAでBATファイルを起動したいのですが、上手く動きません。
どのようにコードを変更するかご教示頂けますでしょうか?
なおBATファイルのみをダブルクリックしますと、問題なく動きます。
(※当該フォルダにAllfileが作成されます。)
発生している問題・エラーメッセージ
エラーメッセージ等はなく、起動がされない(ファイルが出力されない)形です。
該当のソースコード
■VBA
Dim dProcessId As Double
Dim sPath
sPath = "S:\user1_gyomu\public\700_契約書text\★Allfile_connect.bat" dProcessId = Shell(sPath) Application.Wait Now + TimeValue("0:00:01")
■BAT
copy *.txt Allfile.txt
試したこと
以下も同様にデバッグは起きませんが、BATファイルの起動はされないようです。
' ---------------------------------------------------------------------------------
' ●案1
' Dim bookPath As String
' Dim batchPath As String
' Dim wsh As Object
'
' '実行中のExcelファイルのパスを取得
' bookPath = ThisWorkbook.Path
' '実行するバッチファイルのパスを取得
' batchPath = bookPath + "\★Allfile_connect.bat"
' 'バッチファイルを同期実行(処理完了後に制御が返ってくる)
' Set wsh = CreateObject("WScript.Shell")
' Call wsh.Run(batchPath, WaitOnReturn:=True)
' '後片付け
' Set wsh = Nothing
' ---------------------------------------------------------------------------------
' ●案2
' Dim procId As Double
' Dim sPath
' Dim hProc As Variant 'プロセスハンドル
'
' sPath = "S:************************\★Allfile_connect.bat"
'
' procId = Shell(sPath)
' ---------------------------------------------------------------------------------
' ●案3
' Dim sPath
' Dim procId As Long 'プロセスID
' Dim hProc As Variant 'プロセスハンドル
'
' sPath = "S:************************\★Allfile_connect.bat"
'
' '■外部プログラムの実行
'
' procId = Shell(sPath, vbMinimizedFocus)
'
' hProc = OpenProcess(PROCESS_ALL_ACCESS, False, procId) 'プロセスハンドルを取得
' If hProc > 0 Then 'プロセスハンドルを取得出来た場合
' Call WaitForSingleObject(hProc, INFINITE) 'プロセスがシグナル状態になるまで待つ。
' CloseHandle hProc 'プロセスハンドルを解放する。
' End If
' Application.Wait Now + TimeValue("0:00:10")
補足情報(FW/ツールのバージョンなど)
Excel 2016 64Bitになります。
OpenProcessの宣言等はしていますので、デバッグは発生しません。
※最終的に実現したい事
最終的には、フォルダ内にある複数のテキストファイルをエクセルに一括インポートしたい。
①BATファイルでをテキストファイルを一つのファイルにマージ
→BATファイル単体では起動可、この工程をVBAで起動したい
必要であれば、作成が終わるまでの待ち時間も加味したい
②①をSendkeys等でコピペし、Excelに貼付
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/07 01:10