2012-09-06 88 views
2

我試圖將word doc中的所有元素複製到新的word doc中。當我試圖讓所有ChildElements我得到的消息,在這條線「對每個元素作爲OpenXmlElement在templatedoc.MainDocumentPart.Document.Body.ChildElements」「不設置到對象的實例對象引用」複製word doc中的所有元素

請幫助

代碼:

Dim containerElement = NewDocument.MainDocumentPart.Document.Descendants().FirstOrDefault()  

Dim clonedElements = New List(Of OpenXmlElement) 

For Each element As OpenXmlElement In templatedoc.MainDocumentPart.Document.Body.ChildElements 

     clonedElements.Add(element.Clone()) 

Next 

containerElement.RemoveAllChildren() 

containerElement.Append(clonedElements) 
+0

在何種環境是你的工作? ASP.NET和VBA是完全不同的兩種環境。它看起來像ASP.NET。如果是這樣,你不需要聲明'element'變量嗎? –

+0

這是我用VBA.net運行的Visual Basic。我不應該添加「A」。如果我聲明一個變量並分配childelements,那麼它停止在dim語句處。 – henrysh

+0

你的意思是* VB.NET *? ;) –

回答

0

感謝球員和女孩!

這是我最後的工作代碼:

   ' Copy XML parts to define document 
       NewDocument.AddPart(templatedoc.GetPartById("rId3"), "rId3") 
       NewDocument.AddPart(templatedoc.GetPartById("rId2"), "rId2") 

       '// Add a main document part. 
       Dim mainPart = NewDocument.AddMainDocumentPart() 

       ' // Add a Body    
       mainPart.Document = New Document(New Body()) 

       'Copy Document XMLParts - must be in specific order 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId8"), "rId8") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId3"), "rId3") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId7"), "rId7") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId2"), "rId2") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId1"), "rId1") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId6"), "rId6") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId5"), "rId5") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId4"), "rId4") 
       mainPart.AddPart(templatedoc.MainDocumentPart.GetPartById("rId9"), "rId9") 


       '// Copy text from template document 
       Dim containerElement = NewDocument.MainDocumentPart.Document.Descendants().FirstOrDefault() 
       Dim clonedElements = New List(Of OpenXmlElement) 

       Dim elementstocopy = templatedoc.MainDocumentPart.Document.Body.ChildElements 

       For Each element As OpenXmlElement In elementstocopy 
        clonedElements.Add(element.Clone()) 
       Next 

       containerElement.RemoveAllChildren() 
       containerElement.Append(clonedElements) 

       mainPart.Document.Save()