2010-06-29 87 views
2

Word 2007允许XML模式附加到文档(在开发人员工具栏| XML组架构按钮下)。这个模式库信息存储在哪里?Word 2007架构库存储在哪里?

我有基于架构的自定义XML标签创建的文档,但是当我将文档和架构传递给其他人时,架构被标记为不可用,这可能是因为架构的文件位置不同。

有什么方法可以编辑这些信息来改变给定模式的路径吗?

+0

做下面的回答你的问题? – 2010-07-13 15:20:25

+0

不是。我想知道的是这些关于模式的信息存储在哪里(例如,在某个配置文件或注册表或任何其他位置),然后找到它,如果它处于我可以编辑的形式。 – 2010-07-14 06:48:10

+0

直到现在还没有看到(标记某人在评论中,以便他们会收到通知,将“@”和他们的用户名,比如@ @ Otaku)。我想我并不理解你的需求 - 如下所述,只有模式的路径与docx和应用程序一起存储。它不存储在其他地方。所以如果你想改变路径,你会在应用程序中改变它。例如,根据下面的代码,'Debug.Print objSchema.Location'将向您显示路径,并且您可以设置位置,但是如果您位于不同的计算机上,则必须首先附加该模式。 – 2010-07-18 21:07:57

回答

3

它不与docx一起存储,只是存储它的路径。因此,传递文档几乎总是会破坏链接。 VSTO可以通过将XSD作为资源嵌入到应用程序中来解决这个问题。

但是对于VBA来说,这很棘手 - 你需要在每个用户的计算机上有一个可以依赖的路径,然后在那里部署你的XSD。一种方法是同步Document_Open(或仅使用AutoOpen)事件,以便在用户打开文档时(警告:需要绕开宏安全性),可以简单地将您的XSD编写为硬编码在代码隐藏,然后一个字符串写入到一个文件,然后附上文件,像常规:

Dim objSchema As XMLNamespace 
Set objSchema = Application.XMLNamespaces.Add("c:\something\mynewlycreated.xsd") 
objSchema.AttachToDocument ActiveDocument 

所以当你没有留下文物的背后,然后你可以删除该用户的计算机XSD在Document_CloseAutoClose