Microsoftの無限の迷路documentationに記載されているように、フィールドコードをロックすることができます。私は
{DATE \@ "M/d/yyyy h:mm:ss am/pm" \* MERGEFORMAT }
の形で体内で単一の日付フィールドを持っている場合、VBAの例では、私は、ドキュメントに変更を加える場合は、その後、保存し再その後
ActiveDocument.Fields(1).Locked = True
を実行することができますフィールドコードは更新されません。 C#のオフィス相互運用機能を使用して
例:
Word.Application wordApp = new Word.Application();
Word.Document wordDoc = wordApp.ActiveDocument;
wordDoc.Fields.Locked = 1; //its apparently an int32 rather than a bool
あなたはDocumentOpen
イベントにコードを配置することができます。私はあなたがイベントを購読するアドインを持っていると仮定しています。そうでない場合は、それ自体が戦闘になる可能性があるので、明確にしてください。
EDIT:この方法でフィールドをロックすると、すべてStoryRanges
にフィールドがロックされるため、ヘッダー、フッター、脚注、テキストボックスなどでフィールドインスタンスを取得する必要はありません。これは驚くべきことです治療する。
私はこれをWord Interopサンプルアプリケーションを使用して試しましたが、「DocumentOpen」イベント内にロッキングコードを挿入するというトリックはそのようなことをしていないようです。日付フィールドは、イベントが発生する前に更新されます。つまり、この修正によって問題が解決されません。しかし、文書の最初の保存時にフィールドがロックされていた場合は、記述したように問題が解決されてしまいますが、残念なことにそうではありません。 –
これにはXMLを使用する必要があります – JohnZaj