Excel VBAを用いてファイル名にカテゴリを反映する方法

この記事では、Excel VBAを利用してファイルの種類やカテゴリをファイル名に反映する方法について詳しく説明します。具体的なコード例とその詳細な解説、そしてさらなる応用例を3つご紹介します。

目次

Excel VBAの基本

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

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

基本的な処理の概要

ファイル名を変更することは、管理や識別を容易にするために非常に重要です。例えば、請求書、見積もり、契約書などの業務ファイルを管理している場合、それぞれのファイル名に適切なカテゴリや種類を追加することで、一目でそのファイルの内容が理解できるようになります。

VBAコードでの実装

Sub RenameFilesWithCategory()
    Dim folderPath As String
    Dim fileName As String
    Dim newFileName As String
    Dim category As String
    ' フォルダのパスを指定
    folderPath = "C:\YourFolderPath\"
    fileName = Dir(folderPath & "*.xls*")
    ' ファイルがなくなるまでループ
    Do While fileName <> ""
        ' カテゴリを取得するロジック(ここではダミーとして"請求書"を設定)
        category = "請求書_"
        ' 新しいファイル名を生成
        newFileName = category & fileName
        ' ファイル名を変更
        Name folderPath & fileName As folderPath & newFileName
        ' 次のファイルへ
        fileName = Dir
    Loop
End Sub

コードの詳細解説

– `folderPath`: 処理対象のフォルダパスを指定します。
– `fileName`: フォルダ内のExcelファイル名を取得します。
– `newFileName`: 新しいファイル名を生成するための変数です。
– `category`: ファイル名に追加するカテゴリ名を保持します。この例ではダミーの”請求書”としていますが、実際の用途に合わせて変更可能です。
– `Dir`関数: 指定したパスのファイル名を取得します。
– `Name`ステートメント: ファイルの名前を変更します。

補足事項

このコードはExcelファイルに特化していますが、他のファイルタイプにも適用できます。ただし、適切な拡張子を指定することが必要です。また、実際の環境での適用前にバックアップを取ることを強くおすすめします。

応用例

1. 複数のカテゴリを判別する

ファイルの内容によって、異なるカテゴリを付けたい場合が考えられます。例えば、特定のキーワードが含まれるファイル名を持つファイルには別のカテゴリを付与する、という処理が可能です。

Sub CategorizeFiles()
    ' 〜(前述の変数宣言など)〜
    If InStr(fileName, "請求") > 0 Then
        category = "請求書_"
    ElseIf InStr(fileName, "契約") > 0 Then
        category = "契約書_"
    End If
    ' 〜(以降の処理)〜
End Sub

2. 日付をファイル名に追加

ファイルの最終更新日をファイル名に追加することで、ファイルの更新履歴を簡単に確認できるようにします。

Sub AddDateToFileName()
    ' 〜(前述の変数宣言など)〜
    Dim lastModifiedDate As Date
    lastModifiedDate = FileDateTime(folderPath & fileName)
    newFileName = Format(lastModifiedDate, "yyyymmdd") & "_" & fileName
    ' 〜(以降の処理)〜
End Sub

3. フォルダ内のサブフォルダも対象とする

フォルダ内のサブフォルダにも同様の処理を適用する方法です。

Sub RenameFilesInSubfolders()
    ' 〜(前述の変数宣言など)〜
    Dim subfolder As Folder
    For Each subfolder In folderPath.Subfolders
        ' サブフォルダ内のファイルも対象とする
        fileName = Dir(subfolder.Path & "\*.xls*")
        ' 〜(以降の処理)〜
    Next subfolder
End Sub

まとめ

Excel VBAを用いて、効率的にファイル名を変更する方法を学びました。これを活用することで、ファイル管理がより簡単になり、日常の作業効率

が大幅に向上することでしょう。

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

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

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

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

コメント

コメントする

目次