• ベストアンサー

コピー&リネーム

こんにちは。仕事で大量の反復作業があるため、マクロでの自動処理を考えています。VBの参考図書を見ながら挑戦してみたのですが、何分初めてなものでなかなかうまくいきません・・・もう時間が無いので、お恥ずかしいのですが教えて頂けないでしょうか。宜しくお願いいたします。 【処理内容】複数のフォルダがあり、各フォルダの同じ階層位置に同名ファイルが存在します。それらを全て一つのフォルダにまとめてコピーするのですが、同名ファイルなのでコピーの際にリネーム処理も同時に行いながらコピーします。リネームのルールは、「親フォルダ名_元ファイル名.元拡張子」です。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 FileSystemObjectの解説(目次) http://www.officetanaka.net/excel/vba/filesystemobject/index.htm を参考に初めて作った物ですので正解でないかも知れませんが、ご希望の動きは している事は検証できました。 コピー元・コピー先のフォルダを修正して下さい。 Sub try() Dim FSO Dim Folname Dim Fname Dim Cpname As String Dim Psname As String Dim v, vv Cpname = "R:\bbb" ' コピー元の親フォルダ Psname = "R:\bbb" ' コピー先のフォルダ Set FSO = CreateObject("Scripting.FileSystemObject") For Each Folname In FSO.GetFolder(Cpname).SubFolders For Each Fname In FSO.GetFolder(Folname).Files v = Split(Folname, "\") vv = Split(Fname, "\") FSO.GetFile(Fname).Copy Psname & "\" & v(UBound(v)) & "_" & vv(UBound(vv)) Next Next Set FSO = Nothing End Sub ご参考になれば。

pe-777
質問者

お礼

n-junさん。完璧です!!ありがとうございました!助かりました(^-^)

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

”マクロ”で”VB”と言う事は、どのアプリなのでしょう。 Excel or Access とか。 VB.NETとか。 >初めてなものでなかなかうまくいきません 提示してみては如何でしょう。 そこを修正する事で、間違っていた部分を理解出来るかと思います。

pe-777
質問者

補足

すみません、Excelのマクロで考えています。マクロってExcelに限った話ではないんですね・・・お恥ずかしいです。

関連するQ&A

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • バッチファイルでファイル名をリネームのコマンドにつ

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたjかご教授いただけますでしょうか。よろしくお願い致します。

  • リネームについて

    PHP初心者です。宜しくお願い致します。 リネームについて2点程質問があります。 1.特定フォルダ内にある全てのCSVファイル内の特定箇所の  リネームについて列内に記入されているファイル名「123_4.jpg」  や「123-4.jpg」の「_」を「a」に「-」を「b」にすることは可能  でしょうか?  できれば該当のCSVファイルを開かずに、特定の列を指定しその列に  記入されている全ての「_」と「-」を置換したいと思っています。  「123_4.jpg」→「123a4.jpg」  「123-4.jpg」→「123b4.jpg」   とこのような感じに。 2.特定フォルダ内の画像ファイルのリネーム  上記と同様に「_」を「a」、「-」を「b」置換 できれば、元ファイルをコピーして別のフォルダにリネームした ファイルを保存したいと思っています。 宜しくお願い致します。  

    • ベストアンサー
    • PHP
  • 一括で上書きリネームしたい

    WindowsXP環境です。 例えば、ファイル名 「a.txt」 と 「a (競合コピー).txt」 というファイルが同じフォルダー内にあります。 「a.txt」が古いファイルで「a (競合コピー).txt」が新しいファイルです。 (競合コピー)とファイル名に付いた新しいファイルがいろんなフォルダー内にいくつもあります。 新しいファイルである「a (競合コピー).txt」を「a.txt」にリネームするフリーのソフトがありませんか? 元々ある「a.txt」の方は削除されてもリネームされても構いません。 リネーム後のファイル名が同じフォルダーに無ければリネームできるソフトは見つかるのですが、そうでない場合だと見つかりませんでした。 何かいい方法あったら教えてください。 なぜ、こうなったかというとDropboxで久しぶりにインストールし直して同期したら、Dropboxのサーバーにあった古いファイルがローカルのフォルダーに保存され、元々あった新しいファイルが(競合コピー)と付け加えられてしまいました。逆ならよかったのですが。。。 何かいいソフトか方法があれば教えてください。よろしくお願いします。

  • ファイル名のリネームとコピーを問合せ形式で行いたい

    よろしくお願いします。 ファイル名のリネームとコピーをDOSコマンドで問合せ形式で行うBATを作りたいのですが、作り方を教えて頂きたく質問をさせて頂きます。 実行環境は「Windows Server 2008 R2」です。 やりたいことは、 (1)BATをDOSプロンプトで起動 (2)「リネームするファイルのディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で3個)が画面に表示されて、番号で指定。 (3)「リネーム前のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (4)「リネーム後のファイル名を入力してください」と聞いてきて、ファイル名を入力。 (5)「xxxをyyyにリネームします。よろしいですか?」と聞いてきて、「はい」ならリネームを実行、「いいえ」なら(2)に戻る。エラーならBAT終了。 (6)「リネームを繰り返しますか?」と聞いてきて、「はい」なら(2)~(5)を繰り返し、「いいえ」なら(7)へ。 (7)「コピー元のディレクトリを選択してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (8)「コピー元のファイル名を選択してください」と聞いてきて、番号が付いたファイルの一覧(固定で10個)が画面に表示されて、番号で指定。 (9)「コピー先のディレクトリを入力してください」と聞いてきて、番号が付いたディレクトリの一覧(固定で4個)が画面に表示されて、番号で指定。 (10)「xxxをyyyにコピーしますよろしいですか?」と聞いてきて、「はい」ならコピーを実行、「いいえ」なら(7)に戻る。エラーならBAT終了。 (11)「コピーを繰り返しますか?」と聞いてきて、「はい」なら(7)~(10)を繰り返し、「いいえ」ならBAT終了。 初心者レベルではこのようなBATが作成できずに困っております。 どうぞ、よろしくお願いします。

  • エクセル:マクロを使ったリネーム

    お世話になります。 下記の内容をエクセルのマクロでできるでしょうか? あるフォルダ(ここでは例としてAフォルダとする)のなかに複数のフォルダがはいっています。これらのフォルダ名は実際はかなり長いのですが、必ず5桁の数字+アンダーバーではじまります。 (例:00123_●●●) この各フォルダにはいくつかのファイルが入っていて、拡張子がxmlのファイルが必ず1つ入っています。この拡張子がxmlのファイル名の先頭にフォルダの5桁の数字+アンダーバーをつけた名前にリネームしたいのです。 例:abcde.xml でフォルダ名が00123_●●●の場合  → 00123_abcde.xml にする。 そしてリネームしたxmlファイルをAフォルダ直下に移動させたい。 事情がありリネームソフト等は使えません。 マクロを記述したエクセルファイルをAフォルダ直下に入れて動作させるものとします。 エクセル2003です。 よろしくお願いします。

  • 古いファイルを含むディレクトリのリネーム

    古いファイルを含むディレクトリのリネーム Linuxサーバのファイル整理の目的で 指定ディレクトリ以下の階層の複数フォルダについて 古い画像ファイル(90日以上変更がない".jpg"ファイル)しかないものは (1)ディレクトリ名をリネーム(ディレクレトリ名末尾に"_deleted"を追加) (2)ディレクトリ内の古いファイルを削除 したいと考えております。 find と xargs をつなげてあげれば、(2)単体であればできるのですが ex.) find . -type f -ctime +90 -print0 | xargs -0 rm 「格納されている全てのファイルが対象となる場合」に「ディレクトリ名をリネームして」 という処理で悩んでおります。 皆様、アドバイスの程お願い致します。 ========================================== 環境: ========================================== OS: CentOS5.4 bashなどを利用して,簡易的に実行できればと考えております。

  • Mac フォルダ間のコピー

    同名フォルダをコピーする場合、 Macでは上書きではなく、置き換えられてしまいますが、 コピー元フォルダ内のファイルを「すべて選択」して、 コピー先フォルダへ落とせば、 同名ファイルは「置き換えますか?→はい」でそのまま、 その他の新しいファイル(コピー先にはないファイル)は 「新たに追加」されるという認識で合ってますでしょうか。 少ないファイル数で試してみて一応うまくいったのですが、 なんとなく自信がないので、 よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • マクロ【所定フォルダで条件検索コピー】

    いつも大変御世話になります。 【D:\test】フォルダ内に、1つのエクセルファイル(Excel2003)があります。 ・エクセルファイル名は【test.xls】。 ・シート【起動シート】のみがあります。 今回悩んでいるのはシート名【起動シート】内にあるマクロボタンに入れるマクロです。 理想の処理は以下のようになります。 (1)【D:\sample】フォルダにあるいくつかのテキストファイルでサイズがあるテキストファイルのみを 【E:\sample】フォルダに同名でコピーする ネット上に情報があるかと思い調べましたが、なかなかそういった処理にはであえませんでした。 何か簡単なサンプルコードをご教授願いますでしょうか? 余りにも初歩的な質問で申し訳ありませんが、宜しくお願い致します。

  • ホルダーのリネームができない

    win10 20H2にアップデイト後、エクスプローラやデスクトップ上でのホルダーのリネームでエラーとなる、"予期しないエラーの為フォルダー名を出来ません。"、"エラー 0x80004005 エラーを特定できません"とのメッセイジですが、割りあい深い階層の既成のホルダーのリネームでは成功する時が有ります、但しコマンドではリネイムできます。対応方法のご教授ください。

専門家に質問してみよう