ヒガサラblog

サラリーマン向けに、仕事を効率良く進めていくための方法についてご紹介しています。プログラミングから対人スキルまでを幅広く掲載中。

ヒガサラblog

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

 f:id:yshgs_elec:20210222214200p:plain

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

 

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

 

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

 

スポンサーリンク

 

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

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

 

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

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

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

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

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

f:id:yshgs_elec:20210222211051j:plain

 

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

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

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

f:id:yshgs_elec:20210222211256j:plain

 

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

 

スポンサーリンク

 

ファイルの仕分けを行う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です。

 

スポンサーリンク

 

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

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

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

f:id:yshgs_elec:20210222212726j:plain

 

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

 

先ほどのフォルダ内の大量のファイルはきれいになくなりました。f:id:yshgs_elec:20210222212747j:plain

 

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

f:id:yshgs_elec:20210222212843j:plain

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

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

 

スポンサーリンク

 

おわりに

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

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

 

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

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

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

 ↓ 応援ボタン

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

 

それではまた!