文書の「作成者」を書き換える(Word)

文書情報を書き換える

BuiltInDocumentPropertiesプロパティ

私は、Microsoftアカウントを、実にふざけた名前で登録してしまっている。

f:id:akashi_keirin:20220213083119p:plain

だから、自宅のPCで作成したドキュメントをもとに、仕事で使うドキュメントを作成したときなんかには、「作成者」とか「最終更新者」のところに、非常に恥ずかしい名前が表示されてしまって困る。

f:id:akashi_keirin:20220213083122p:plain

まあ、そもそも「ファイル」タブをクリックして、「情報」を確認するような人は、わが業界にはほとんどいないので、バレることも滅多にないのであるが!

「作成者」を書き換える

「作成者」を表すDocumentPropertyオブジェクトを取得する

「作成者」を書き換えるには、まず、「作成者」を表すオブジェクトを取得せねばならない。

それは、DocumentPropertyオブジェクトである。

そして、それは[Document].BuiltInDocumentPropertiesプロパティから取得する。

簡単に言うと、

  • DocumentオブジェクトのBuiltInDocumentPropertiesプロパティから、BuiltInDocumentPropertiesコレクションオブジェクトを取得する!
  • BuiltInDocumentPropertiesコレクションオブジェクトのItemプロパティから、「作成者」を司るDocumentPropertyオブジェクトを取得する!

こういうことである!

とりあえず、「オブジェクト ブラウザー」様によると、

f:id:akashi_keirin:20220213083124p:plain

ということなので、[Document].BuiltInDocumentPropertiesコレクションのItem(Index)プロパティで、「Index」に適当な値を渡してやればいい。

「作成者」の場合は、「"Author"」という文字列か、またはwdPropertyAuthorWdBuiltInProperty列挙体のメンバ)を渡す。

そうすると、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」に書き換えるだけのマクロ。

こいつを、先の恥ずかしいドキュメントをアクティヴにして実行すると、

f:id:akashi_keirin:20220213083126p:plain

当然こうなる。

おわりに

これで、「作成者」欄に恥ずかしいアカウント名が刻印されたドキュメントが大量にあったとしても、簡単にクレンジングできる。

しかし、「最終更新者」はこの方法ではだめなんだよなあ……。