• 締切済み

VBA バッチファイルでコピー出来ない

以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell(folderB\batch.bat, vbnormalfocus) End sub Batch.batの中身 Copy folderA\fileA . 注:folderAやfolderBはそれぞれのフォルダのフルパスです。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

みんなの回答

  • Kaneyan-R
  • ベストアンサー率42% (1340/3126)
回答No.1

バッチファイルはあまり良く理解してないけど、そのバッチファイル、保存先の指定がないのでは? そのマクロが記載されているExelファイルって、デスクトップに保存されているのでは? それだとカレントディレクトリがfolderBじゃないから、当然カレントディレクトリであるデスクトップに保存されますね。 バッチファイルを直接起動する場合は、ディレクトリを移動しているのだから、カレントディレクトリはバッチファイルがあるフォルダになっている。だから「ちゃんと実行された様に見えるだけ」だと思いますが。

High_Score
質問者

お礼

ありがとうございます。 Copy folderA\fileA . 保存先は「.」つまりピリオドになっており、バッチファイルのあるフォルダ(フォルダB)のつもりで作ってます。 エクセルファイル自体は全然違うフォルダにありますが、起動させるバッチファイルはフォルダBにあります。

High_Score
質問者

補足

舌足らずですみません。エクセルファイルはデスクトップにはありません。

関連するQ&A