【发布时间】:2015-11-25 15:11:09
【问题描述】:
我需要将自定义元数据存储在 Word 文档中。 “文档属性”限制为 255 个字节,但我的数据是 >> 10k
我们正在使用 VBA 编写一个 word 扩展来与我们的应用程序交互,并希望将我们的应用程序数据存储在 word 文档中。这个想法是,用户可以只共享 word 文档,而不共享我们应用程序的任何其他数据文件。
有没有人知道如何在 Office 2003+ 文档中有效地存储任意元数据?
【问题讨论】:
我需要将自定义元数据存储在 Word 文档中。 “文档属性”限制为 255 个字节,但我的数据是 >> 10k
我们正在使用 VBA 编写一个 word 扩展来与我们的应用程序交互,并希望将我们的应用程序数据存储在 word 文档中。这个想法是,用户可以只共享 word 文档,而不共享我们应用程序的任何其他数据文件。
有没有人知道如何在 Office 2003+ 文档中有效地存储任意元数据?
【问题讨论】:
刚刚在 VBA 编辑器即时窗口中尝试过:
ActiveDocument.Variables.Add "foo", String(10000, ".")
? Len(ActiveDocument.Variables("foo"))
10000
文档变量与文档一起存储。正如我刚刚发现的那样,它们似乎高达 65280 个 Unicode 字符(在 Word 2003 中测试;更新:此限制在 Word 2007 和 2010 中相同)。
如果您担心数据接近 60k,我建议您将其拆分为多个变量,或者在存储之前对其进行压缩。 This post 显示了在 VBA 中执行此操作的一些选项。
【讨论】:
它不完全符合您的要求,因为它不适用于 Word 2003。但是,您仍然可能对它感兴趣(否则我建议您使用 Tomalak 建议的文档变量):
在 Word 2007(及更高版本)中,您可以将任意 XML 文档作为 Custom XML 嵌入到 Word 文档中。
MSDN 上的这篇文章中描述了一个示例:How to: Add Custom XML Parts to Documents by Using VSTO Add-Ins
【讨论】: