こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル表のパスからのコピー処理について

お世話になります。
エクセルVBAで質問です。
下記のような表をエクセルで作り、A列の名称が元フォルダのパス、
そのフォルダの中にエクセルとパワポやワードのファイル名が入っているとします。
その中の全てのファイルをコピーで同じ行のB列のフルパスのフォルダ内にコピーしたいのですが、マクロなどでの作成方法を教えてくだい。

A列 B列
C:\a1 Z:\test1
C:\a2 Z:\test2
C:\a3 Z:\test3




バッチファイルであれば簡単なことですが、エクセルの表で管理したい次第です。

コピー先フォルダ内に同じファイルがあれば上書きしても構いません。(何回実行して同じファイルが上書きされてもOK)

出来ればxcopyで実行したいのですが、VBやVBAで使えるコマンドなのか、また繰り返し処理や応用に慣れてないため、詳しい方ご教授いただけると幸いです。
例えばC列以降に元のコピー対象ファイルを全て書き出してから、それらの一つ一つのファイルを読み込んでB列のフォルダ内にコピーするような動きでも問題ありません。

リスト作成する行の数は毎回決まっていなく、最大で50くらいあります。

ぜひ、ご教授お願いします。

投稿日時 - 2016-03-08 00:50:12

QNo.9139638

困ってます

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

こんにちは
こんな感じでしょうか?
Sub test()
  Dim c As String
  Dim r As Range
  Dim t As Range
  Dim s As Object
  Dim e As Object
  
  Set s = CreateObject("WScript.Shell")
  Set t = Range("A1").CurrentRegion.Columns(1)
  For Each r In t.Cells
    c = "XCopy " & r.Value & " " & r.Offset(, 1).Value _
      & " /s /e /c /h /r /k "

    Set e = s.Exec("%ComSpec% /c " & c)
  Next
End Sub

投稿日時 - 2016-03-08 08:04:22

お礼

早速のお返事ありがとうございます‼︎

回答の速さにビックリしています。

まだ、検証ができておりませんが、恐らくきっと期待通りにことが進むと思います♪

頭の中のイメージで、マクロを組めるんですか!?
素晴らしいです、身近におりましたら神と呼ばさせていただきたいくらいかも笑

投稿日時 - 2016-03-08 22:11:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

VBAからShell でxcopyを使うこともできますし、
FileCopyで直接コピーすることも可能です。

ただVBAよりもバッチファイルのほうがなれているのであれば、
エクセルファイルをcsvファイルにしておいて、バッチファイル側で読み込むほうが
簡単かもしれません。

もしくはVBAでバッチファイルを出力してもいいと思います。
xcopy セルA セルB を各行ごとに出力すればいいので、
VBAの練習にはちょうどいいかなと思います。

投稿日時 - 2016-03-08 08:18:27

お礼

早々なアドバイスいただきありがとうございます!

VBAでバッチファイル用に出力する手がありましたね。。(*^_^*)

まだまだ未熟者ですが、もう少し勉強してみます。
何方かと言えば、バッチファイルの作成の方が慣れてます。ログとかも残しておきたいので。

投稿日時 - 2016-03-08 22:19:28

あなたにオススメの質問