Excel VBAを用いた特定の拡張子ファイルの自動整理方法

この記事では、Excel VBAを使用して特定の拡張子を持つファイルだけを一つのフォルダに集める方法を詳しく解説します。具体的なコード例とその詳細、さらには応用例を交えてご紹介します。

目次

Excel VBAの基本

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

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

基本的なコードの解説

Excel VBAを用いて、特定の拡張子のファイルを特定のフォルダに移動するための基本的なコードを以下に示します。


Sub MoveFilesByExtension()
    Dim SourcePath As String
    Dim DestPath As String
    Dim FileExt As String
    Dim FileName As String
    
    SourcePath = "C:\SourceFolder\"  '元のフォルダのパス
    DestPath = "C:\DestFolder\"      '移動先のフォルダのパス
    FileExt = "*.txt"               '移動したいファイルの拡張子
    
    FileName = Dir(SourcePath & FileExt)
    
    Do While FileName <> ""
        FileCopy SourcePath & FileName, DestPath & FileName
        Kill SourcePath & FileName
        FileName = Dir
    Loop
End Sub

コードの詳細解説

– `SourcePath`: ファイルが現在格納されている元のフォルダのパスを指定します。
– `DestPath`: ファイルを移動させたい先のフォルダのパスを指定します。
– `FileExt`: 集めたいファイルの拡張子を指定します。この例ではテキストファイル(*.txt)を対象としています。
– `Dir`関数: 指定されたパスに合致するファイルの名前を取得します。取得後はループ内で次のファイル名を取得するために再度使用します。
– `FileCopy`: ファイルをコピーします。
– `Kill`: 元のフォルダからファイルを削除します。

応用例

1. 複数の拡張子を持つファイルを移動する

場合によっては、複数の種類のファイル(例:.txt, .docx)を同じフォルダに移動させたいことがあります。


Sub MoveMultipleFileTypes()
    Dim ExtArray As Variant
    Dim i As Integer

    ExtArray = Array("*.txt", "*.docx")
    
    For i = LBound(ExtArray) To UBound(ExtArray)
        FileExt = ExtArray(i)
        ' 基本的な移動コードを繰り返す
        '...
    Next i
End Sub

2. ファイルの移動だけでなく、バックアップも取る

移動前にファイルのバックアップを取りたい場合もあります。バックアップを取る場合のコード例を以下に示します。


Sub MoveWithBackup()
    Dim BackupPath As String

    BackupPath = "C:\BackupFolder\"

    ' ファイルをバックアップ先にコピー
    FileCopy SourcePath & FileName, BackupPath & FileName

    ' ファイルを移動
    '...
End Sub

3. ログを作成しながらファイルを移動する

移動したファイルのリストや移動日時をログとして記録したい場合のコード例を以下に示します。


Sub MoveWithLogging()
    Dim LogFile As String
    Dim fso As Object, txt As Object

    LogFile = "C:\Log.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txt = fso.OpenTextFile(LogFile, 8, True)

    ' ファイルを移動
    '...

    txt.WriteLine "File: " & FileName & " moved on " & Now
    txt.Close
End Sub

まとめ

Excel VBAを用いることで、特定の拡張子を持つファイルを効率よく整理・移動させることができます。この記事で紹介した基本的なコードをベースに、さまざまな応用やカスタマイズを加えることで、日々の業務をより効率化することが期待できます。

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

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

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

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

コメント

コメントする

目次