我为另一个团队编写了一个实用程序,它通过使用 Word Interop 和 C# 递归地遍历文件夹并将找到的 Word 文档转换为 PDF。
我们遇到的问题是文档创建时的日期字段在保存之前更新为今天的日期。我找到了一种在打印前禁用更新字段的方法,但我需要防止字段在打开时更新。
这可能吗?我想在 C# 中进行修复,但如果我必须进行 Word 宏,我也可以。
最佳答案
如微软无尽迷宫中所述documentation您可以锁定域代码。例如在 VBA 中,如果我在正文中有一个日期字段,格式为
{DATE \@ "M/d/yyyy h:mm:ss am/pm" \* MERGEFORMAT }
我能跑
ActiveDocument.Fields(1).Locked = True
然后如果我对文档进行更改,保存,然后重新打开,字段代码将不会更新。
使用 c# Office Interop 的示例:
Word.Application wordApp = new Word.Application();
Word.Document wordDoc = wordApp.ActiveDocument;
wordDoc.Fields.Locked = 1; //its apparently an int32 rather than a bool
您可以将代码放在DocumentOpen
事件中。我假设您有一个订阅事件的加载项。如果不是,请澄清,因为这本身就是一场战斗。
编辑:在我的测试中,以这种方式锁定字段会在所有 StoryRanges
中锁定它们,因此无需在页眉、页脚、脚注、文本框等中获取字段实例,...等。这是一种令人惊讶的款待。
关于c# - 防止 Word 文档的字段在打开时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974125/