基本的に、Excel vba で runcmd 関数を使用して実行しているバッチファイルがあります。
Function runCmd(fileCommand As String) As Boolean
On Error GoTo Err_Hnd
Dim strCmdPath As String
strCmdPath = VBA.Environ$("COMSPEC")
VBA.ChDir "C:\Users\" & Environ$("Username") & "\"
VBA.Shell strCmdPath & " /c" & fileCommand, vbNormalFocus
runCmd = True
Exit Function
Err_Hnd:
runCmd = False
End Function
file コマンドは、バッチ ファイルのフル パスです。このコードを実行すると、次のエラーが表示されます
「C:\Users\UserName\Desktop\Move.bat」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。
ただし、行runCmd = Trueにブレークポイントを配置し、F8 または F5 を使用してコードを実行すると、完全に機能します。なぜこれが起こっているのか分かりません。
編集: ChrisProsser のコードを試した後、少し異なるエラーが発生しました。コマンドプロンプトは言った-
1 ディレクトリが移動されました。バッチ ファイルが見つかりませんでした。
移動したのは 1 フォルダだけです。
残念ながら、このエラーを再現できず、最初にエラーを書き留めていなかったため、これは逐語的ではありません。
いくつかの詳細情報-バッチファイルは実際にはテキストファイルであり、実行時にバッチファイルに変換され、この関数runCmdが実行された後にテキストファイルに戻される移動コードが含まれています。したがって、プロセスは
- テキストファイルからバッチファイルへ
- runCmd バッチファイル
- バッチファイルからテキストファイルへ
これにより、エラーが発生する可能性がありますか?