【VBA】ブックのプロパティを取得する

これで楽に!?VBA活用

こんにちは、Ryoです。
VBAにはExcelブックのプロパティを取得するBuiltinDocumentPropertiesプロパティがあり、ここには作成者の氏名や作成日時、ブックへのアクセス日時などの情報が格納されていますので、知っておくと活用する幅が広がります。今回はその内容について書いていきます。

スポンサーリンク

1.サンプル概要

サンプルとして、今回取得したい対象ブックのプロパティのインデックス(後述します)をセルA2~A18 に記載しており、サンプルコード実行時に取得します。

サンプルコードを実行することでセルB2~B18にそれぞれ取得した内容を書き込んでいきますが、指定するインデックス名によっては対象ブックに存在しない情報、未設定の情報などもありエラーになることがあります。

その為、サンプルコードではエラー無視の処理を行いエラーとなったインデックス項目は黄色に塗りつぶす形にしています。その実行結果が以下になります。

まず取得したいブックのプロパティが以下です。

実行結果は以下の通りになります。

日付の項目は取得した際に「シリアル値」になっているので、対象セルの書式を日付にすることで正常表示できます。

では、これらのインデックス項目などを含めて以下に書いていきます。

2.サンプルコード

Sub Sample1()

 Dim i As Integer
 Dim p_name As String
 
 With ThisWorkbook.BuiltinDocumentProperties
      '本サンプルのプロパティインデックス17項目の
      '繰り返し処理
     For i = 2 To 18
         'A列のインデックス名を読み込み
         p_name = Cells(i, 1)
         'インデックス名によってはエラーとなり処理が
         '終了してしまう為、エラーを無視して次処理に移行
         On Error Resume Next
         Cells(i, 2) = .Item(p_name)
         'エラーが発生した場合は対象インデックス名の
         'セルを黄色で塗りつぶし、エラー表示させる
         If Err.Number <> 0 Then
             Cells(i, 1).Interior.ColorIndex = 6
             Cells(i, 2) = "この項目はエラー!"
         End If
     Next i
 End With

End Sub

ブックのプロパティを取得するにはBuiltinDocumentPropertiesプロパティを使用します。

オブジェクト.BuiltinDocumentProperties index

このプロパティの引数indexに指定する主な名前や番号、内容は次の通りです。

インデックス名インデックス番号内容
Title1タイトル
Subject2サブタイトル
Author3作成者
Keywords4キーワード
Comments5コメント
Template6テンプレート
Last Author7最終保存者
Revision Number8改定番号
Last Print Date10印刷日
Creation Date11作成日
Last Save Time12更新日
Total Editing Time13編集時間
Number of pages14ページ数
Number of Words15単語数
Number of Characters16文字数
Security17セキュリティ
Company21会社名

本サンプルコードでは表内の項目をセルA列に記載し、それぞれを取得するという形としています。項目数は全部で17なので繰り返し処理をFor~Nextで行い、A列に記載したインデックス名を読み込んでBuiltinDocumentPropertiesプロパティの引数としています。

後はOn Error Resume Nextを使い、次行のCells(i, 2) = .Item(p_name)でエラーとなっても無視させて、処理を継続します。

エラーが発生していれば、If Err.Number <> 0 Thenで”0″以外となるので、黄色塗りつぶしとエラー表示を行っています。

Last Print Date,Creation Date,Last Save Timeは取得した際にシリアル値なので、対象セルの書式を日付とすることで正常に表示されます。

ちなみにLast Print Dateも「未印刷」ブックの場合はエラーになりますのでご注意ください。

3.まとめ

こうして改めてプロパティを取得してみると、普段あまり気にしていない項目が取得できずにエラーとなっているので、何をどうしたらそこが取得できるのか、そしてそれがどのように活用できるのかを考えてみるのも面白そうだなぁと個人的に思った次第です。



ブック自体の情報を取得して処理する際の分岐条件に活用するなど、知っておくことで活用の幅が広がると思いますので、機会があればぜひご検討くださいませ!

以上、ブックのプロパティを取得する方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

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