質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

5940閲覧

VBAでBATファイルを起動したい

club33gold

総合スコア20

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/06 09:50

編集2021/12/06 09:59

前提・実現したいこと

 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に貼付

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

起動はされているのでしょう。
カレントディレクトリの認識があなたとWindowsで異なるので、エラーになっている、もしくは、結果の確認が出来ていないのではないでしょうか?

S:\user1_gyomu\public\700_契約書text\★Allfile_connect.batを実行して、
S:\user1_gyomu\public\700_契約書text\にあるファイルを対象にしたいのであれば、

CMD

1pushd "%~dp0" 2copy *.txt Allfile.txt

でしょうか。

投稿2021/12/06 10:04

otn

総合スコア84808

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

club33gold

2021/12/07 01:10

ありがとうございます! BAT内でカレントディレクトリの認識がありませんでしたので、こちらの反映で解決しました。 こちらの内容でベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問