2010-06-29 66 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