excel和xml - 使用VBA

时间:2016-02-15 23:18:45

标签: xml excel vba xslt openxml

我正在使用OpenXML导入XML并将其转换为Excel:

Workbooks.OpenXML Filename:=sPath, Stylesheets:=Array(1)

在XML文档中,我插入样式表引用(因为它们不存在):

<?xml-stylesheet type='text/xsl' href='STIG_ckl.xsl'?>

但是,我想有一种方法可以使用样式表,而无需在XML文档本身中使用它。

使用OpenXML,&#34;数组(1)&#34;使用XML中第一个引用的样式表。

但是我想给它一个完全独立于XML的样式表,例如:(但这不起作用)

Workbooks.OpenXML Filename:=sPath, Stylesheets:=sPathToXSL

感谢。肖恩。

1 个答案:

答案 0 :(得分:0)

考虑直接将XSLT应用于XML,然后导入生成的XML。回想一下,XSLT是一种专门用于处理XML文档的专用语言,可以在样式表声明之外使用。 VBA配备了使用MSXML对象的XSLT处理器:

Sub XSLTransform()

   ' SET VBA REFERENCE MSXML v3, v6'
   Dim xmldoc As New MSXML2.DOMDocument 
   Dim xslDoc As New MSXML2.DOMDocument 
   Dim newDoc As New MSXML2.DOMDocument

   ' LOAD XML AND XSL FILES '
   xslDoc.async = False
   xmlDoc.Load "C:\Path\To\InputXML.xml"

   xslDoc.async = False    
   xslDoc.Load "C:\Path\To\XSLT_Script.xml"        

   ' TRANSFORM XML '
   xmldoc.transformNodeToObject xslDoc, newDoc

   ' SAVE OUTPUT '
   newDoc.Save "C:\Path\To\OutputXML.xml"

   Workbooks.OpenXML Filename:="C:\Path\To\OutputXML.xml"

End Sub