2010-06-29 108 views
2

this tutorial(和其他許多)中,CustomXMLParts對象集合Load中有一個整數,我無法找到解釋。在Word 2007中VBA參考似乎並沒有列出Load方法之一:Word 2007 VBA:ActiveDocument.CustomXMLParts

''# Load CustomerData.xml file 
    ActiveDocument.CustomXMLParts.Add 
    ActiveDocument.CustomXMLParts(4).Load ("c:\CustomerData.xml") 

什麼是代表什麼?

回答

4

總是有三個每個.docx(由Word 2007/2010創建 - 不一定是由Open XML SDK創建的.docx)中內置的CustomXMLParts。即:

<cp:coreProperties xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"><dc:creator></dc:creator><cp:keywords/><dc:description/><dc:subject/><dc:title/><cp:category/><cp:contentStatus/></cp:coreProperties> 

<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"><Company/><Manager/></Properties> 

<CoverPageProperties xmlns="http://schemas.microsoft.com/office/2006/coverPageProps"><PublishDate/><Abstract/><CompanyAddress/><CompanyPhone/><CompanyFax/><CompanyEmail/></CoverPageProperties> 

所以4這裏只是意味着,你已經做了ActiveDocument.CustomXMLParts.Add後添加的第四個「得到了第四個」。如果你有更多的,你可以使用下一個可用的索引號。取而代之的4,我可能只是用這個代替:

Dim ap As Document 
Set ap = ActiveDocument 
ap.CustomXMLParts.Add 
ap.CustomXMLParts(ap.CustomXMLParts.Count).Load ("C:\CustomerData.xml") 
+0

太感謝了,一個更快速的問題:如果我想在綁定到XML文件.dotm模板內容的控制,我做每次文檔加載時(即Sub onload())需要調用CustomXMLParts.Load(以及每個控件的SetMapping方法),還是隻能在執行後保存它? – gravyface 2010-06-29 20:48:57

+0

你應該只需要映射一次,而不是每次。但是,如果您的XML數據在關閉/打開文檔之間發生變化,您將需要沉沒XMLNode事件(本頁底部):http://msdn.microsoft.com/en-us/library/aa433905(office.12) )的.aspx。 – 2010-06-29 20:59:34

+0

@Okatu,我有一個類似的問題與差異http://stackoverflow.com/questions/4565185/iterating-xml-nodes-using-vba-word-2007-vba-retreiving-and-iterating-activedoc。能否請你幫忙。 – 2010-12-30 18:32:45