Excel VBAを使ってダウンロードフォルダのファイルを種類別に整理する方法

現代の業務環境では、ファイルのダウンロードは日常的な作業の一部となっています。しかし、ダウンロードフォルダはあっという間に乱雑になりがちです。この記事では、Excel VBAを使用してダウンロードフォルダ内のファイルを種類別に整理する方法を詳しく説明します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本コード

Excel VBAを使い、ダウンロードフォルダ内のファイルを種類別に整理する基本のコードです。


Sub OrganizeDownloadsByFileType()
    Dim MyFile As String
    Dim FileType As String
    Dim FolderPath As String
    Dim NewFolder As String
    ' ダウンロードフォルダのパス
    FolderPath = "C:\Users\YourUserName\Downloads\"
    ' ダウンロードフォルダ内の最初のファイルを取得
    MyFile = Dir(FolderPath & "*.*")
    ' 各ファイルをチェック
    Do While MyFile <> ""
        ' ファイルの種類を取得
        FileType = Right(MyFile, Len(MyFile) - InStrRev(MyFile, "."))
        
        ' 新しいフォルダのパスを設定
        NewFolder = FolderPath & FileType & "\"
        
        ' フォルダが存在しない場合は作成
        If Not Dir(NewFolder, vbDirectory) <> "" Then
            MkDir NewFolder
        End If
        
        ' ファイルを新しいフォルダに移動
        Name FolderPath & MyFile As NewFolder & MyFile
        
        ' 次のファイルを取得
        MyFile = Dir
    Loop
End Sub

コードの解説

このコードは、ダウンロードフォルダに存在する各ファイルの拡張子を取得し、その拡張子名のフォルダを作成して、その中にファイルを移動します。

1. `Dir` 関数でダウンロードフォルダ内のファイルを一つずつ取得します。
2. `Right` と `InStrRev` 関数でファイルの拡張子を取得します。
3. 拡張子のフォルダが存在しない場合、`MkDir` 関数でフォルダを作成します。
4. `Name` ステートメントを使用して、ファイルを新しいフォルダに移動します。

応用例

Excel VBAのコードは、さまざまな方法でカスタマイズすることができます。以下はこのコードの応用例を3つ紹介します。

応用例1: ファイルサイズが大きいファイルのみ整理


Sub OrganizeLargeFiles()
    '(基本コードと同じ変数宣言)
    ' ファイルサイズのしきい値
    Dim FileSizeThreshold As Long
    FileSizeThreshold = 10000000 ' 10MB
    '(基本コードと同じフォルダ内のファイル取得)
    ' 各ファイルをチェック
    Do While MyFile <> ""
        If FileLen(FolderPath & MyFile) > FileSizeThreshold Then
            '(基本コードと同じファイル整理の処理)
        End If
        ' 次のファイルを取得
        MyFile = Dir
    Loop
End Sub

応用例2: 特定の拡張子のファイルのみ整理


Sub OrganizeSpecificFileTypes()
    '(基本コードと同じ変数宣言)
    ' 整理するファイルの拡張子
    Dim OrganizeExtensions As Collection
    Set OrganizeExtensions = New Collection
    OrganizeExtensions.Add "pdf"
    OrganizeExtensions.Add "docx"
    OrganizeExtensions.Add "xlsx"
    '(基本コードと同じフォルダ内のファイル取得)
    ' 各ファイルをチェック
    Do While MyFile <> ""
        If Not IsError(OrganizeExtensions.Item(FileType)) Then
            '(基本コードと同じファイル整理の処理)
        End If
        ' 次のファイルを取得
        MyFile = Dir
    Loop
End Sub

応用例3: 整理後のレポートを作成


Sub OrganizeAndReport()
    '(基本コードと同じ変数宣言)
    Dim ReportWs As Worksheet
    Dim LastRow As Long
    ' 新しいワークシートを作成
    Set ReportWs = ThisWorkbook.Worksheets.Add
    ReportWs.Name = "OrganizeReport"
    ' ヘッダーの作成
    ReportWs.Cells(1, 1).Value = "File Name"
    ReportWs.Cells(1, 2).Value = "New Location"
    '(基本コードと同じフォルダ内のファイル取得)
    ' 各ファイルをチェック
    Do While MyFile <> ""
        '(基本コードと同じファイル整理の処理)
        ' レポートに追加
        LastRow = ReportWs.Cells(Report
Ws.Rows.Count, 1).End(xlUp).Row + 1
        ReportWs.Cells(LastRow, 1).Value = MyFile
        ReportWs.Cells(LastRow, 2).Value = NewFolder & MyFile
        ' 次のファイルを取得
        MyFile = Dir
    Loop
End Sub

まとめ

Excel VBAを使用して、簡単にダウンロードフォルダ内のファイルを種類別に整理することができます。上記の基本コードを参考に、さまざまな応用例を試してみてください。日常の作業を効率化するための一つの方法として、是非このコードを活用してください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次