PR

【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に指定する主な名前や番号、内容は次の通りです。

インデックス名 インデックス番号 内容
Title 1 タイトル
Subject 2 サブタイトル
Author 3 作成者
Keywords 4 キーワード
Comments 5 コメント
Template 6 テンプレート
Last Author 7 最終保存者
Revision Number 8 改定番号
Last Print Date 10 印刷日
Creation Date 11 作成日
Last Save Time 12 更新日
Total Editing Time 13 編集時間
Number of pages 14 ページ数
Number of Words 15 単語数
Number of Characters 16 文字数
Security 17 セキュリティ
Company 21 会社名

本サンプルコードでは表内の項目をセル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をコピーしました