• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA バッチファイルでコピーできない)

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

neKo_deuxの回答

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.3

> 「カレントフォルダ=バッチファイルのあるフォルダ」と思ってましたが、そうではないということですか? その通りです。 下記の、カレントフォルダを確認するコマンドなんかを実行させるとかすれば、確認できます。 > 起動時のカレントフォルダの確認方法とかあるのでしょうか? コマンドで行うのなら、「cd」でEnter。 コマンドでカレントフォルダを移動するのなら、「cd folderA」でEnter。 バッチ処理中でも可能です。 cd folderB copy folderA\fileA . copy folderA\fileF . copy folderA\fileN . 上の処理は、 copy folderA\fileA folderB copy folderA\fileF folderB copy folderA\fileN folderB って書いても同様の動作をします。 どちらが良いってのは無いと思いますが、修正のしやすさとか、カレントフォルダって今どこよ?ってな事になりにくさとか、そういうの考慮して、お好みの方法で。 VBAの処理だと、CurDir()関数で確認できます。 こちらのサイトで、質問者さんと同じ誤解について説明してくれているので、一読してみると良いと思います。 VBA応用(絶対パス指定と相対パス指定) http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html -- その他、バッチ処理ではコマンドでカレントフォルダ指定しますが、そのバッチファイルを右クリックでドラッグ&ドロップ、ショートカットを作成すると、ショートカットのプロパティでショートカット起動時の作業フォルダ(カレントフォルダ)の指定が出来るとか。

High_Score
質問者

お礼

ありがとうございます。 疑問が解消しました。検索してもなかなか見つかりませんでしたが、やっぱり誤解する人は多いのですね。

関連するQ&A

  • 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にコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • バッチファイルで複数のディレクトリのファイル削除

    バッチファイルで複数のディレクトリの中のCSVファイルを削除しようとしています。 D: ├─folderA | ├─fileA.csv | └─fileB.csv ├─folderB | ├─fileC.csv | └─fileD.csv └─folderC   ├─fileE.csv   └─fileF.csv このような階層で、カレントがD直下です。 D直下からfolderA、folderB、folderCの名前を指定せずに、 D直下にあるすべてのフォルダの中のcsvファイルをバッチで全部削除したいのです。 ワイルドカードを使えばいいのでしょうが、いまいちうまくいきません。 よろしくお願いします。

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)

  • 【バッチ】外部リストを参照したコピー処理について

    バッチの作成(DOSコマンド)で質問です。 今、フォルダ(とサブフォルダ、ファイル)をコピーするバッチを作成していますが、コピー対象のフォルダが複数あり今後も増える可能性があるので外部リスト化しようと下記のようなバッチとリストファイルを作成ました。 【バッチの記述(抜粋)】 for /f %%i in (リストファイル) do ( xcopy /i /e /q /y /r /v "%%i\*" "コピー先フォルダ\%%i" ) 【リストファイルの記述】 \\A\1\2\3\4 \\B\1\2\3\4 \\C\1\2\3\4 上記でリストにあるフォルダのコピーはできるのですが、これだとリスト内の全フォルダがコピー対象になってしまいます。 このリストファイルは似た処理を行う別のバッチでも参照させたく、またバッチ毎に参照するパスを分けたいのです。 (リストファイルを分ければ簡単ですが、メンテナンスをラクにしたくて・・) 例えば下記のようにラベルを付与し、ラベルから次のラベルまでを対象にする、などです。 【リストファイルの記述】 :bat1 \\A\1\2\3\4 \\B\1\2\3\4 \\C\1\2\3\4 :bat2 \\D\1\2\3\4 \\E\1\2\3\4 \\F\1\2\3\4 :bat3 \\G\1\2\3\4 \\H\1\2\3\4 \\I\1\2\3\4 何かいい方法はありますでしょうか?

  • バッチファイルにてフォルダのみをコピーしたい

    たくさんのフォルダが有って、その下にもサブフォルダがあります。 また、フォルダの中にはファイルも存在します。 このような状況の中、サブフォルダもフォルダもコピーせず、フォルダのみをコピーしたいのですが、バッチファイルにて可能でしょうか?

  • vba ファイルの移動について

    フォルダAの中にあるたくさんのpdfファイルの中から、 ファイル名の頭文字3つがE列に記載した「aaa」だったら フォルダBに移動させるという内容にしたいです。 ネット検索などで、近いものを作成しましたが(下に貼り付け)、 下から4行目、「fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName」で 「実行時エラー'53'  ファイルが見つかりません。」 とエラーが出てしまいます。 どの様に書き直せばよいのでしょうか? どなたかご存じでしたら、ぜひお教え下さい。 よろしくお願いします。 エクセル2010を使用しています。 Sub CheckAndMoveFiles() Dim FolderA As String Dim FolderB As String FolderA = Range("D1").Value FolderB = Range("B2").Value Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim ws As Worksheet Set ws = ActiveSheet Dim lastRow As Long lastRow = ws.Range("E" & Rows.Count).End(xlUp).Row Dim r As Long Dim fileName As String For r = 1 To lastRow If ws.Cells(r, "E").Value <> "" Then fileName = ws.Cells(r, "E").Value dFileName = Dir(FolderA & "\" & Left(fileName, 3) & "*.pdf") Do While dFileName <> "" dFileName = Dir() Loop fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName 'ここでストップ End If Next End Sub

  • Automatorでファイルの移動とコピー

    Automatorのフォルダアクションを使ってファイルを2ヶ所のフォルダにコピーしたいのですが、うまくいきません。 フォルダAに保存されたPDFをフォルダBの日付フォルダ(フォルダ名:yy-mm-dd)に移動して、次にフォルダCにコピーをすることが目的です。 ネットの情報を参考にしながら下記のようなワークフローを作成しました。 AutomatorのフォルダアクションでフォルダAを指定 1. 指定されたFinder項目を取得(Automatorでのテスト用に設定) 2. フォルダの内容を取得 3. 変数の値を取得   変数名:folderA 4. AppleScriptを実行  on run {input, parameters}   set folderA to item 1 of input    -- POSIX変換   set folderA_POSIX to POSIX path of folderA   -- 移動先   set folderB to "フォルダBのパス"    -- フォルダBの中の日付名のサブフォルダ   set theTime to do shell script "date +'%y-%m-%d'"    -- フォルダB / yymmdd のパス   set yymmdd to do shell script "find " & folderB & " -name " & theTime & "* -print"   set moveCommand to "mv " & quoted form of folderA_POSIX & " " & quoted form of yymmdd   do shell script moveCommand   return input end run Finder項目をコピー      フォルダCを指定 一応、上記の流れで動いているのですが、このワークフローと同じ内容で別のフォルダ用にコピーをしたところ、「AppleScriptを実行」の結果に移動先のフォルダBのyy-mm-ddフォルダに保存されたファイルのパスが表示されず、最初のフォルダAのパスが入っていて、テストの結果のログの部分には、「アクション”Finder項目をコピー”に必要なデータがありません」とありました。 ワークフローをコピーする前のちゃんと結果を得られている方のフォルダでは、移動先のパスが結果に表示されていたので、最後の return input の値が更新されていないのかな?と想像しているのですが、どうしたら良いですか? 「Finder項目をコピー」にデータを引き渡すことができない原因はなんでしょうか? 同じスクリプトで問題なく動いているフォルダもあるのですが、違いは何でしょうか? アクセス権はいずれも同じ設定(読み書きOK)になっています。 そもそも上記のようなスクリプトで問題ないでしょうか? Macもまだ慣れず、AutomatorもAppleScriptも知識がないのでとんちんかんな質問でしたら申し訳ありませんが、ご指導よろしくお願い致します。

    • ベストアンサー
    • Mac
  • エクセルVBAで、バッチ処理を起動すると・・・

    Windows/XP/pro、エクセル2002 使用です。 c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。 参考URL http://www.ponko2.com/ftp_bat.html この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか? Sub test() Dim str As Variant str = Shell("c:\autocsv\auto.bat", vbNormalFocus) Application.Wait Now + TimeValue("00:00:10") End Sub (VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません) なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。 お手数ですが、ご指導いただけますようお願いします。

  • バッチファイルで複数のディレクトリのexe実行

    http://oshiete1.goo.ne.jp/qa4729613.html こちらでも似たような質問をして教えて頂きましたが、もう一つ教えてください。 D: ├─folderA | └─A.exe ├─folderB | └─A.exe └─folderC   └─A.exe カレントはD直下です。 D直下からfolderA、folderB、folderCの名前を指定せずに、 D直下にあるすべてのフォルダの中のA.exeをバッチでそれぞれ実行したいのです。 startでやればいいのかと思いましたが、これでは/sが使えずに削除と同じようにはできませんでした。 よろしくお願いします。

  • 【バッチファイル】ファイルコピー

    E:\system\●●\[選択肢]から、あるファイル(仮にA.batとします)を AllUserのスタートアップにコピーする、 というバッチファイルを作成したいのですが どなたかご存知の方おりましたらご教示願いたいです。 ちなみに、[選択肢]の部分で、いくつかある項目の中から一つ選ぶと それをコピーするという形にしたいのです。 例えばその項目が「1:○○、2:△△、3:□□」だとして、 1を入力するとE:\system\●●\○○\A.batがコピーされるという感じです。 例)、 [選択肢]を選んでください。(ここで1or2or3を入力) ---コピー実行--- コピーされました。 というようなバッチファイルを作成したいのですが・・・ 何卒、よろしくお願い致します。