文書の「作成者」を書き換える(Word)
文書情報を書き換える
BuiltInDocumentPropertiesプロパティ
私は、Microsoftアカウントを、実にふざけた名前で登録してしまっている。
だから、自宅のPCで作成したドキュメントをもとに、仕事で使うドキュメントを作成したときなんかには、「作成者」とか「最終更新者」のところに、非常に恥ずかしい名前が表示されてしまって困る。
まあ、そもそも「ファイル」タブをクリックして、「情報」を確認するような人は、わが業界にはほとんどいないので、バレることも滅多にないのであるが!
「作成者」を書き換える
「作成者」を表すDocumentPropertyオブジェクトを取得する
「作成者」を書き換えるには、まず、「作成者」を表すオブジェクトを取得せねばならない。
それは、DocumentProperty
オブジェクトである。
そして、それは[Document].BuiltInDocumentProperties
プロパティから取得する。
簡単に言うと、
Document
オブジェクトのBuiltInDocumentProperties
プロパティから、BuiltInDocumentProperties
コレクションオブジェクトを取得する!BuiltInDocumentProperties
コレクションオブジェクトのItem
プロパティから、「作成者」を司るDocumentProperty
オブジェクトを取得する!
こういうことである!
とりあえず、「オブジェクト ブラウザー」様によると、
ということなので、[Document].BuiltInDocumentProperties
コレクションのItem(Index)
プロパティで、「Index
」に適当な値を渡してやればいい。
「作成者」の場合は、「"Author"
」という文字列か、またはwdPropertyAuthor
(WdBuiltInProperty
列挙体のメンバ)を渡す。
そうすると、Item
プロパティがDocumentProperty
オブジェクトを返す、というしくみ。
DocumentPropertyオブジェクトのValueプロパティを書き換える
DocumentProperty
オブジェクトを取得しさえすれば、これは簡単。
Value
プロパティを書き換えるだけ。
リスト1
Private Sub test01() Dim tgtDoc As Document Set tgtDoc = ActiveDocument tgtDoc.BuiltInDocumentProperties.Item("Author") = "TopSecret" End Sub
「作成者」を「TopSecret
」に書き換えるだけのマクロ。
こいつを、先の恥ずかしいドキュメントをアクティヴにして実行すると、
当然こうなる。
おわりに
これで、「作成者」欄に恥ずかしいアカウント名が刻印されたドキュメントが大量にあったとしても、簡単にクレンジングできる。
しかし、「最終更新者」はこの方法ではだめなんだよなあ……。