Excel

【ファイルコピー】フォルダ内(階層あり)のファイルを別のフォルダへ

2022-02-08

サブフォルダ内(フォルダ内のフォルダ内)にあるファイルを別のサブフォルダ内へコピーする方法です。

エクセルシートを使って簡単にできます。

エクセル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)エクセルのワークシートでコマンドを作成します。

エクセルのワークシート
  • 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)バッチファイルを実行します。(ダブルクリック)

-Excel
-