【VBA】大量のファイルを条件に応じてフォルダごとに仕分けする方法!

f:id:yshgs_elec:20210222214200p:plain

この記事では、大量のデータをエクセルシートに記入された情報をもとに仕分けするVBAのサンプルコードをご紹介しています。

 

状況に応じて微修正するだけで誰でも簡単に活用できるはずです。

 

それでは早速やっていきます!

スポンサーリンク

紹介するスキルの概要説明

まずはじめに今回の記事で紹介する内容を簡単にご説明しておきます。

 

今回は以下の画像のように

◆あるフォルダの中に大量のテキストファイルが入っている

◆そのファイルたちを仕分けする先のフォルダも同じフォルダに入っている

◆仕分けを実行するマクロファイルも同じフォルダに入っている

という状況でスキル解説していきます。

ファイル仕分けを実施するフォルダの中身確認結果

 

また、これらをどのように仕分けをするかは、これから実行するマクロファイルに記入されていることとします。

(A列にファイル名が、B列に仕分けする際に使う数字が入っています。)

今回はB列が1なら01_folderというフォルダに、2なら02_folderというフォルダに3なら03_folderというフォルダにそれぞれファイルを移動させることにします。

ファイルと仕分け先のフォルダを一覧化した結果

状況説明はこのくらいにして、さっそくこれらのデータを仕分けするコードを書いていきましょう。

 

なお、A列の情報は自動で取得することも可能です。

興味がある方は以下の記事を参考にしてみてください。

【VBA】Dir関数を使ったフォルダ内の探索事例5つ!ファイル名をセルに一括出力!

スポンサーリンク

ファイルの仕分けを行うVBAコード

さっそくですが、以下が条件に応じてファイルを仕分けするVBAサンプルコードです。

 

◆VBAサンプルコード

Sub shiwake()
    '変数の型を宣言
    Dim file_name As String
    Dim i As Integer
    'A列が空欄になるまで繰り返し処理を実施
    Do Until Cells(2 + i, 1) = ""
        file_name = Cells(2 + i, 1)
        '仕分け番号が1の場合
        If Cells(2 + i, 2) = 1 Then
        Name ThisWorkbook.Path & "\" & file_name As ThisWorkbook.Path & "\01_folder\" & file_name
        Else
        '仕分け番号が2の場合
        If Cells(2 + i, 2) = 2 Then
        Name ThisWorkbook.Path & "\" & file_name As ThisWorkbook.Path & "\02_folder\" & file_name
        Else
        '仕分け番号が3の場合
        If Cells(2 + i, 2) = 3 Then
        Name ThisWorkbook.Path & "\" & file_name As ThisWorkbook.Path & "\03_folder\" & file_name
        End If
        End If
        End If
        i = i + 1
    Loop
End Sub

◆サンプルコードの解説

ファイル移動スキル Name  A as B

A : 移動前のファイルのフルパス

B : 移動後のファイルのフルパス

これでファイルを移動することが出来ます。

 

基本的にはIF文を使い、このNameスキルの仕分け先を条件に応じて変更しているだけです。

もし仕分け先が4つ以上になる場合はその分IF文を増やしていけばOKです。

スポンサーリンク

サンプルコードの実行結果確認

最後に念のためこのコードを実行してみましょう。

 

実行前のフォルダ内はこんな感じです。

サンプルコード実行前のフォルダの中身

 

それでは、いざ実行!!!

 

先ほどのフォルダ内の大量のファイルはきれいになくなりました。サンプルコード実行後のフォルダの中身

各フォルダの中を見てみましょう。

仕分け先フォルダの中身確認結果

しっかりエクセルシートに記載されている通りに仕分けが行われることが確認できました。

(フォルダを並べたせいでちょっとわかりにくいですが、ちゃんとできてます。)

スポンサーリンク

おわりに

というわけで今回は大量のファイルを条件に応じて仕分けする方法をご紹介しました。

なかなかない状況だとは思いますが、こんなこともエクセルでできるということは頭に入れておくと良いでしょう。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました