Excel VBAを使って特定のフォーマットのファイルをフォルダ内に整理する方法

この記事では、Excel VBAを使用して特定のフォーマットのファイルを一つのフォルダに整理する方法について説明します。具体的なコードとその詳しい解説、さらには応用例を含めて紹介していきます。この技術を活用することで、ファイルの整理作業を効率化できるでしょう。

目次

Excel VBAの基本

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

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

基本コードの解説

Excel VBAを使用して、特定のフォーマットのファイルを一つのフォルダに整理する基本的なコードは以下の通りです。


Sub OrganizeFiles()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim file As String
    SourceFolder = "C:\YourSourceFolderPath"  '元のフォルダを指定
    DestFolder = "C:\YourDestFolderPath"  '移動先のフォルダを指定
    file = Dir(SourceFolder & "\*.xls*")  '特定のフォーマット(ここではExcelファイル)を指定
    Do While file <> ""
        Name SourceFolder & "\" & file As DestFolder & "\" & file  'ファイルを移動
        file = Dir  '次のファイルを取得
    Loop
End Sub

このコードは、指定されたソースフォルダ内のすべてのExcelファイル(.xls、.xlsxなど)を指定された宛先フォルダに移動します。

コードのポイント

1. `Dir` 関数: この関数を使って、特定のフォーマットのファイルを取得しています。
2. `Name` ステートメント: これを使用して、ファイルを新しい場所に移動しています。

応用例

応用1: 特定のキーワードが含まれるファイルだけを移動


Sub OrganizeFilesByKeyword()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim file As String
    Dim keyword As String
    SourceFolder = "C:\YourSourceFolderPath"
    DestFolder = "C:\YourDestFolderPath"
    keyword = "report"
    file = Dir(SourceFolder & "\*.xls*")
    Do While file <> ""
        If InStr(file, keyword) > 0 Then
            Name SourceFolder & "\" & file As DestFolder & "\" & file
        End If
        file = Dir
    Loop
End Sub

応用2: ファイルの日付で整理


Sub OrganizeFilesByDate()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim file As String
    Dim lastModified As Date
    SourceFolder = "C:\YourSourceFolderPath"
    DestFolder = "C:\YourDestFolderPath"
    file = Dir(SourceFolder & "\*.xls*")
    Do While file <> ""
        lastModified = FileDateTime(SourceFolder & "\" & file)
        If lastModified > Date - 30 Then  '最近30日以内に更新されたファイル
            Name SourceFolder & "\" & file As DestFolder & "\" & file
        End If
        file = Dir
    Loop
End Sub

応用3: 複数のフォルダに分けて整理


Sub OrganizeFilesByType()
    Dim SourceFolder As String
    Dim DestFolderXLS As String
    Dim DestFolderXLSX As String
    Dim file As String
    SourceFolder = "C:\YourSourceFolderPath"
    DestFolderXLS = "C:\YourDestFolderPath\XLS"
    DestFolderXLSX = "C:\YourDestFolderPath\XLSX"
    file = Dir(SourceFolder & "\*.xls*")
    Do While file <> ""
        If Right(file, 4) = ".xls" Then
            Name SourceFolder & "\" & file As DestFolderXLS & "\" & file
        ElseIf Right(file, 5) = ".xlsx" Then
            Name SourceFolder & "\" & file As DestFolderXLSX & "\" & file
        End If
        file = Dir
    Loop
End Sub

まとめ

Excel VBAを活用することで、煩雑なファイルの整理作業も効率的に行うことができます。上記の基本コードや応用例を参考に、自身の業務に合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次