フォルダ内に保存されているファイルを別の階層があるフォルダ内にコピーしたいのだけど、簡単な方法はないのかな。
このような場合は、手作業では時間がかかって大変です。
いくつか簡単にコピーできる方法のうち、次の2つを解説します。
2つの方法
- エクセルVBA
- バッチファイル
- コピー元:サブフォルダ内(フォルダ内のフォルダ内)にあるファイル
- コピー先:別のサブフォルダ内へ
目次
コピーする例
フォルダの保存先「F:\sample\」にコピーもとのフォルダ「moto」とコピー先のフォルダ「saki」があります。
それぞれのフォルダ内にはさらにフォルダがあります。
フォルダ「moto」の2階層目のフォルダ内テキストファイルが保存されていて、そのファイルをフォルダ「saki」の2階層目にコピーします。
緑の枠で囲ったファイルをコピーします。
エクセルVBAの場合
はじめに、エクセルにコピーもととコピー先のパスを書き出します。
2行目の入力例
- 1列目(A列):F:\sample\moto\
- 2列目(B列):m01
- 3列目(C列):\test1.txt
- 4列目(D列):1~3列目(A~C)の文字結合/CONCAT関数等
- 5列目(E列):F:\sample\saki\
- 6列目(F列):s01
- 7列目(G列):\test1.txt
- 8列目(H列):5~7列目(E~G)の文字結合/CONCAT関数等
以下はサンプルコードです。
Sub sample() Dim moto As String Dim saki As String Dim i As Long For i = 2 To 4 moto = Cells(i, 4) saki = Cells(i, 8) FileCopy moto, saki Next i End Sub
バッチファイルの場合
(1)エクセルのワークシートでコマンドを作成します。
2行目の入力例
- 1列目(A列):copy /copyの後は半角空白
- 2列目(B列):moto\m01
- 3列目(C列):\test1.txt
- 4列目(D列): saki\s01/sakiの前は半角空白
- 5列目(E列):\test1copy.txt
- 6列目(F列):1~5列目(A~E)の文字結合/CONCAT関数等・例:=CONCAT(A2:E2)
(2)フォルダ内に新規テキストファイルを作成します。
作成例:フォルダ内で右クリック>新規作成>テキストドキュメントをクリックします。
ファイル名を付けます。日本語にすると実行できない場合があるので英文字を使います。
(3)エクセルで作ったコマンドをコピーして、テキストファイルに貼り付けます。
テキストに貼り付けた状態です。
(4)テキストファイルをコピーし、ファイル名を変更します。「.txt」を「.bat」に変更します。
(5)バッチファイルを実行します。(ダブルクリック)