Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
バッチファイルの引数にAccessのテーブルの値を渡したい件
投稿日時: 22/02/16 18:33:28
投稿者: コンギョ

いつもありがとうございます。
 
バッチファイル「A.bat」に渡す引数で困っています。
バッチファイル「A.bat」では引数で受け取ったファイルパスを指定の場所に移動する処理をします。
その処理が複数あるときに、VBAの繰り返し処理でバッチファイル「A.bat」を呼び出すとコマンドプロンプトの画面が処理分起動してタスクが大変なことになりました。
処理が必要なファイルパスはクエリで準備してあります。
その先頭から最後までを1つのバッチファイルに順番に渡すようにすることはできないでしょうか。
 
ご指導のほどよろしくお願いいたします。

回答
投稿日時: 22/02/16 23:11:13
投稿者: よろずや

ExcelVBA の例ですが参考になると思います。
 
https://tech-vb.com/excel_vba_macro_call_batfile_returnvalue_get

回答
投稿日時: 22/02/17 09:17:26
投稿者: Suzu

ループの中でバッチファイルを呼び出しているので
その呼び出しの分だけコマンドウィンドが開いていると言うことですね。
 
あくまで、バッチ内に複数引数を渡し、バッチ内で処理なのであれば
Shell "C:\DATA\BAT.BAT A B C D" の様に、引数を 半角スペース区切りで渡し、
バッチ内で
 
echo %1
echo %2
echo %3
echo %4
 
の様に、%〇 で変数受けできます。
ただし、〇 は、0〜9 までの指定であり、 %0 は バッチファイルの自パス変数になるので
実質 1〜9 までしか使用できません。
 
Shiftコマンドを使用すれば、9個 以上の引数を渡しても処理はできますが、
バッチ内でのループ処理が必要です。
 
https://www.javadrive.jp/command/bat/index6.html
https://notepad-blog.com/content/189/
http://capm-network.com/?tag=Windows%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BC%95%E6%95%B0
https://qiita.com/koiwaiwaiko/items/f47e9cd25f61a82435d4
 
 
ウィンドウが表示されているのを制御したいだけなら
Shell "C:\DATA\BAT.BAT", vbHide
 
の様に、ウィンドを非表示に。

投稿日時: 22/02/18 17:20:46
投稿者: コンギョ

よろずや様
Suzu様
 
コメントありがとうございます。
 
引数9個以上の問題も同時に解決できました。
どうもありがとうございました。