Excel

【超簡単】Excel VBAを使ってフォルダ内のファイルを自動分類!初心者向けブログ

業務をする中で、ファイルの整理が苦手で悩んでいませんか?Excel VBAを使えば、フォルダ内のファイルを自動的に拡張子毎に分類することができます!この記事では、初心者向けに分かりやすく、フォルダ分類のプログラムコードを紹介します。ぜひ、お読みください!

・仕事していて、ファイルが乱雑に保存されていく。。。
・みんなで使うフォルダがルールがないため、保存先がわからない。
・自動で分類する方法ないかな。。。

こんな疑問を解決します。

このブログの対象者
・ブログを始めたいけれど、ファイルの整理に悩んでいる初心者の方
・Excel VBAを使って効率的に作業を進めたいと考えている方
・ファイルの分類作業に手間取っているブロガーの方

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンスです。 エンジニア転職を考えている方やプログラミングに興味がある方、新しいスキルを習得したい方に特におすすめです。

拡張子毎にフォルダを作成して自動分類するプログラム例

以下は、Excel VBAを使用してフォルダ内のファイルを拡張子毎に分類し、拡張子のフォルダが存在しない場合には新しいフォルダを作成するプログラムです。

まず最初にフォルダの中に、複数の拡張子のファイルを保存します。こんな感じで、PDF, csv, pngのファイルを乱雑に入れておきます。

こちらのフォルダを作成したら、パスを確認します。

今回のパスは:C:\Users\user\OneDrive\ドキュメント\VBA

このパスをプログラムの中のフォルダパスに入れます。コードはこのままVBAの貼り付ければ使用することができます。ただ、フォルダパスのみ、自分のPCのパスを入れてみてください。

Sub フォルダ内ファイルの分類()
    Dim フォルダパス As String
    Dim ファイル名 As String
    Dim 拡張子 As String
    Dim 対象フォルダ As Object
    Dim 対象ファイル As Object
    Dim 対象フォルダ名 As String
    
    ' 対象のフォルダパスを指定してください
    フォルダパス = "C:\Users\user\OneDrive\ドキュメント\VBA"
    
    ' 対象フォルダを作成
    Set 対象フォルダ = CreateObject("Scripting.FileSystemObject").GetFolder(フォルダパス)
    
    ' フォルダ内の各ファイルに対して処理を行う
    For Each 対象ファイル In 対象フォルダ.Files
        ファイル名 = 対象ファイル.Name
        拡張子 = UCase(Right(ファイル名, Len(ファイル名) - InStrRev(ファイル名, ".")))
        
        ' 拡張子のフォルダが存在しない場合は作成
        If Not CreateFolderIfNotExists(フォルダパス & "\" & 拡張子) Then
            MsgBox "フォルダの作成に失敗しました。"
            Exit Sub
        End If
        
        ' ファイルを移動
        対象ファイル.Move フォルダパス & "\" & 拡張子 & "\" & ファイル名
    Next 対象ファイル
    
    MsgBox "ファイルの分類が完了しました。"
    
    Set 対象ファイル = Nothing
    Set 対象フォルダ = Nothing
End Sub

Function CreateFolderIfNotExists(フォルダパス As String) As Boolean
    Dim 対象フォルダ As Object
    
    On Error Resume Next
    Set 対象フォルダ = CreateObject("Scripting.FileSystemObject").GetFolder(フォルダパス)
    On Error GoTo 0
    
    If 対象フォルダ Is Nothing Then
        On Error Resume Next
        CreateObject("Scripting.FileSystemObject").CreateFolder フォルダパス
        On Error GoTo 0
        
        Set 対象フォルダ = CreateObject("Scripting.FileSystemObject").GetFolder(フォルダパス)
        If 対象フォルダ Is Nothing Then
            CreateFolderIfNotExists = False
        Else
            CreateFolderIfNotExists = True
        End If
    Else
        CreateFolderIfNotExists = True
    End If
    
    Set 対象フォルダ = Nothing
End Function

では下記の再生ボタンを押して、プログラムを実行してみます。

一瞬でMsgBoxにファイルの分類が完了しましたと表示されます。

ではフォルダを見てみましょう。

一瞬で、元のフォルダの乱雑だったファイルが、拡張子毎にフォルダが作成され格納されています。CSV, PDF, PNGフォルダが作成され、例えばPNGフォルダ内にはこのようにPNGファイルのみに分類されています。
今回は拡張子毎に分けましたが、これらはファイル名称で分けることも可能ですので、ファイル名称にルールをつけ、きれいに自動でフォルダ分類をすることができます。

プログラムの中身

実際にプログラムをやったことでどのようなことができるか分かったと思います。

このプログラムでは、`フォルダパス`変数に分類したいフォルダのパスを指定してください。プログラムは指定したフォルダ内のファイルを処理し、各ファイルの拡張子を取得します。

次に、拡張子のフォルダが存在しない場合にはCreateFolderIfNotExists関数を使用して新しいフォルダを作成します。この関数は指定されたパスに対応するフォルダが存在しない場合にのみフォルダを作成し、作成が成功したかどうかを返します。

フォルダの作成が成功した場合、ファイルを移動します。各ファイルは元のフォルダから拡張子のフォルダに移動されます。

最後に、処理が完了したことを示すメッセージボックスが表示されます。

このプログラムを実行することで、指定したフォルダ内のファイルが拡張子毎に分類され、それぞれの拡張子に対応するフォルダが作成されます。

まとめ

Excel VBAを使ってフォルダ内のファイルを自動的に分類する方法を紹介しました。このプログラムを使えば、ブログ運営におけるファイルの整理作業が効率化され、時間と手間を節約することができます。初心者でも簡単に使えるプログラムなので、ぜひ試してみてください!ブログの運営をスムーズに行い、より多くの読者に魅力的なコンテンツを提供しましょう。

この記事が皆さんのブログ運営に役立つことを願っています。ご質問や疑問があれば、お気軽にコメントしてください。

🚀 0円で現役エンジニアから学べる【Techスクールオンライン】のお申込みをお勧めします。 このオンラインスクールでは、現役のエンジニアから直接学ぶことができ、プログラミングの基礎から高度なスキルまでを習得できます。しかも、今なら 0円 で受講できるチャンス。
私がツナグバに登録してから、求人情報が豊富に届き、自分に合った仕事を見つけることができました。特に、第二新卒向けの求人情報が多いので、自分のスキルや経験を活かしながら新たなキャリアに挑戦することができました。転職活動は不安も多いですが、ツナグバのサポートがあれば、成功への道が明るく感じました。