0

基本的に、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 バッチファイル
  • バッチファイルからテキストファイルへ

これにより、エラーが発生する可能性がありますか?

4

1 に答える 1