PR

【ExcelVBA】エクセルブックのドキュメントプロパティの取得・書き込み

VBA-ブックのドキュメントプロパティの取得と書き込み-アイキャッチ ブックの操作
スポンサーリンク

ブックのドキュメントプロパティとは

ブックのドキュメントプロパティとは、エクスプローラ上でブックを選択して、右クリックのメニューから「プロパティ」を表示させたときに見える情報のことを指しています。

↓下のフォルダに新規作成したブックAがあります。

ブックAのプロパティの詳細タブを開くと今は何も設定していない状態になっています。

エクセルVBA-プロパティ-設定前

ちなみにOfficeのバージョンは「Microsoft Office Professional Plus 2021」でWindows10を使用しています。

スポンサーリンク

マクロでブックのドキュメントプロパティを書き込む方法

マクロで実行している内容
・ブックAを開く
・プロパティを設定する(タイトル・件名・タグ・分類項目・コメント)
・ブックAを保存して閉じる

Sub Sample1()

    With Workbooks.Open("C:フォルダパス\ブックA.xlsx")
    
        'プロパティを設定
        .BuiltinDocumentProperties("Title").Value = "たいとる"
        .BuiltinDocumentProperties("Subject").Value = "けんめい"
        .BuiltinDocumentProperties("Keywords").Value = "たぐ"
        .BuiltinDocumentProperties("Category").Value = "ぶんるいこうもく"
        .BuiltinDocumentProperties("Comments").Value = "こめんと"
        
        'ブックを保存して閉じる
        .Close SaveChanges:=True
        
    End With

End Sub

↓マクロ実行後に再度プロパティを確認すると設定されていることが分かります。

エクセルVBA-プロパティ-マクロで設定後
スポンサーリンク

マクロでブックのドキュメントプロパティを取得する方法

マクロで実行している内容
・ブックAを開く
・プロパティを取得してマクロブックのシートに書き出す
 (タイトル・件名・タグ・分類項目・コメント)
・ブックAを閉じる

Sub Sample1()

    With Workbooks.Open("C:フォルダパス\ブックA.xlsx")
    
        'プロパティを設定
         ThisWorkbook.Worksheets(1).Range("B3") = .BuiltinDocumentProperties("Title").Value 'タイトル
         ThisWorkbook.Worksheets(1).Range("B4") = .BuiltinDocumentProperties("Subject").Value '件名
         ThisWorkbook.Worksheets(1).Range("B5") = .BuiltinDocumentProperties("Keywords").Value 'タグ
         ThisWorkbook.Worksheets(1).Range("B6") = .BuiltinDocumentProperties("Category").Value '分類項目
         ThisWorkbook.Worksheets(1).Range("B7") = .BuiltinDocumentProperties("Comments").Value 'コメント
        
        'ブックを閉じる
        .Close SaveChanges:=False
        
    End With

End Sub

マクロを実行するとブックAのプロパティの情報がシートに出力されます。

エクセルVBA-プロパティ-取得後

プロパティの設定は書き込めるものと書き込めないものが限られているようですが、取得はある程度可能です。

↓ご参考までに。

スポンサーリンク

ブックのドキュメントプロパティをファイルを開かずに取得する

次はブックを開かずに、フォルダ内のブックのプロパティを取得する方法についてです。

フォルダ内にブックA~ブックCまで3つのファイルがあります。

エクセルVBA-フォルダ内に3つのファイルがある状態

ブックA~ブックCのそれぞれのプロパティの値は↓のようになっています。

エクセルVBA-フォルダ内のファイルのプロパティ

マクロで実行している内容
・指定したフォルダ内のブックをループする
・プロパティを取得してマクロブックのシートに書き出す
 (ファイル名・作成者・タイトル・件名・タグ・分類項目・コメント)

Sub Sample1()
    Dim Shell As Object
    Dim Folder As Object
    Dim Target As String
    Dim row As Long
    
    Const Path As String = "C:フォルダパス\"
    
    Set Shell = CreateObject("Shell.Application")
    Set Folder = Shell.Namespace(Path)
    Target = Dir(Path & "*.xlsx")
    
    row = 1
    
    Do While Target <> ""
        row = row + 1
        Cells(row, 1) = Folder.GetDetailsOf(Folder.ParseName(Target), 0)    'ファイル名
        Cells(row, 2) = Folder.GetDetailsOf(Folder.ParseName(Target), 20)   '作成者
        Cells(row, 3) = Folder.GetDetailsOf(Folder.ParseName(Target), 21)   'タイトル
        Cells(row, 4) = Folder.GetDetailsOf(Folder.ParseName(Target), 22)   '件名
        Cells(row, 5) = Folder.GetDetailsOf(Folder.ParseName(Target), 18)   'タグ
        Cells(row, 6) = Folder.GetDetailsOf(Folder.ParseName(Target), 23)   '分類項目
        Cells(row, 7) = Folder.GetDetailsOf(Folder.ParseName(Target), 24)   'コメント
        Target = Dir()
    Loop
    
    Set Folder = Nothing
    Set Shell = Nothing
End Sub

マクロを実行すると、シートに各ブックのプロパティの値が出力されました。

エクセルVBA-フォルダ内のファイルのプロパティを取得
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました