Excel VBAを用いたネットワークドライブのファイル整理方法

Microsoft Excelには、VBA(Visual Basic for Applications)というプログラミング言語が内蔵されており、これを使用することでExcelの機能を拡張したり、自動化したりすることができます。今回は、特定の処理、具体的にはネットワークドライブのアクセス頻度に基づくファイル整理の方法について、VBAを用いて解説します。

目次

Excel VBAの基本

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

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

ネットワークドライブのアクセス頻度に基づくファイル整理の基本

VBAを使って、ネットワークドライブのアクセス頻度に基づくファイル整理を実行する際の基本的な考え方は、アクセス履歴や日付情報を取得し、それに基づいて特定の動作(移動、削除など)を行うことです。


Sub OrganizeFilesByAccessFrequency()
    Dim objFSO As Object, objFolder As Object, objFile As Object
    Dim LastAccessed As Date

    ' FileSystemObjectの作成
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    ' 対象のフォルダを指定
    Set objFolder = objFSO.GetFolder("ネットワークドライブのパス")

    ' 各ファイルのアクセス日を確認
    For Each objFile In objFolder.Files
        LastAccessed = objFile.DateLastAccessed

        ' 最後のアクセス日が30日以上前の場合、別のフォルダに移動
        If Date - LastAccessed > 30 Then
            objFile.Move "移動先のフォルダパス\" & objFile.Name
        End If
    Next

    ' オブジェクトの解放
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
End Sub

コードの詳細解説

上記のコードは、指定したネットワークドライブ内の全てのファイルの最終アクセス日を確認し、その日付が30日以上前のファイルを別のフォルダに移動するものです。

1. `Scripting.FileSystemObject`を使用して、ファイルやフォルダを操作するためのオブジェクトを作成します。
2. 対象となるネットワークドライブのフォルダを指定します。
3. フォルダ内の各ファイルに対して、最終アクセス日を取得します。
4. 最終アクセス日が30日以上前のものは、指定した別のフォルダに移動します。

応用例

1. 最終アクセス日が一定以上のファイルを削除する


Sub DeleteOldFiles()
    '...前述のコードと同様...
    ' 最後のアクセス日が60日以上前の場合、ファイルを削除
    If Date - LastAccessed > 60 Then
        objFile.Delete
    End If
    '...前述のコードと同様...
End Sub

この応用例では、最終アクセス日が60日以上前のファイルをネットワークドライブから削除します。

2. ファイルの拡張子に応じて整理する


Sub OrganizeFilesByExtension()
    '...前述のコードと同様...
    ' .txtファイルの場合、特定のフォルダに移動
    If objFSO.GetExtensionName(objFile.Name) = "txt" Then
        objFile.Move "テキストファイル用のフォルダパス\" & objFile.Name
    End If
    '...前述のコードと同様...
End Sub

この応用例では、`.txt`の拡張子を持つファイルを特定のフォルダに移動します。

3. ファイルサイズに応じて整理する


Sub OrganizeFilesBySize()
    '...前述のコードと同様...
    ' ファイルサイズが1MB以上の場合、別のフォルダに移動
    If objFile.Size > 1048576 Then ' 1MB = 1,048,576 bytes
        objFile.Move "大きなファイル用のフォルダパス\" & objFile.Name
    End If
    '...前述のコードと同様...
End Sub

この応用例では、ファイルサイズが1MB以上のものを特定のフォルダに移動します。

まとめ

VBAを使用して、ネットワークドライブ上のファイルをアクセス頻度やその他の基準に基づき整理することは、日常の業務効率を向上させる上で非常に有効です。今回紹介した基本的なコードや応用例を参考に、自身の業務に合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次