MS Word2011,2013の「ドキュメントのプロパティ」>「ユーザー設定」についてのメモ
Wordでは「ドキュメントのプロパティ」を本文中で参照することが可能であり(多くの場合「クイックパーツ」から貼り付けられる),また,独自のプロパティをユーザーが設定することも可能である。
これを上手く使えば Don't Repeat Again な文書作成も可能となるはずだ。
よく知られているように.docxファイルはXML等をZIPで固めたものなので,unzipすれば中身を確認できる。
そして,パッと見た感じ,ユーザー設定のプロパティは THE_DOC.docx/docProps/custom.xml に記録されている。
例えばこんな風に。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"> <property fmtid="{00000000-0000-0000-0000-000000000000}" pid="2" name="ひづけ(Mac)"> <vt:lpwstr>00002010/05/21</vt:lpwstr> </property> <property fmtid="{00000000-0000-0000-0000-000000000000}" pid="2" name="ひづけ(Win)"> <vt:filetime>2010-05-20T15:00:00Z</vt:filetime> </property> <property fmtid="{00000000-0000-0000-0000-000000000000}" pid="4" name="てきすと"> <vt:lpwstr>てきすとの値</vt:lpwstr> </property> <property fmtid="{00000000-0000-0000-0000-000000000000}" pid="5" name="すうち"> <vt:i4>11922960</vt:i4> </property> <property fmtid="{00000000-0000-0000-0000-000000000000}" pid="6" name="うむ"> <vt:bool>true</vt:bool> </property> </Properties>
プロパティは「日付」「テキスト」「数値」「有無」の4種類から選ぶことができる。
プロパティには共通のFMTIDなるものが振られていて(上の例では念のため全て0に置き換えた),これはプロパティセットフォーマット…を識別するための、GUID
(型/構造体リファレンス - GUID,CLSID,IID,FMTID,CATID)らしいけどよく分からない。
さて,上のプロパティリストの「ひづけ(Mac)」と「ひづけ(Win)」は,同じファイルをそれぞれ Word2011 (Mac) と Word2013 (Win) で保存した場合に記録されたプロパティの値である。
Macでは lpwstr タグ内で,0000yyyy/mm/ddという書式の値が振られ,Winでは filetime タグ内で ISO 8061形式の日付が振られている(2010-05-20T15:00:00Z(世界標準時)は2010-05-21T00:00:00+09:00(日本標準時)と等しいので,両者は要するに同じ日を指している。)。
(テキスト,数値,有無については面倒なので,タグの違いは確認しなかった。)
実は,Word2011で日付形式のプロパティを追加しようとしたところ,ISO8061形式であると0000yyyy/mm/dd書式であるとに関わらず,入力した値は指定された種類ではありません。値はテキストとして保存されます。
というエラーメッセージが出てしまい,日付のプロパティを設定できなかった。
ちょっとよく分からない。