Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 带参数的xls转换的Excel VBA编码_Xml_Vba_Xslt_Excel_Xslt 2.0 - Fatal编程技术网

Xml 带参数的xls转换的Excel VBA编码

Xml 带参数的xls转换的Excel VBA编码,xml,vba,xslt,excel,xslt-2.0,Xml,Vba,Xslt,Excel,Xslt 2.0,我需要使用VBA代码解析xsl及其参数。 我可以使用下面链接中的VBA代码作为参考,但唯一的问题是我需要通过VBA代码传递XSLT参数 我的ds_test.xsl文件 我的输入元数据.xml文件 我的预期输出格式为XML Output.XML 注意:这是我的问题-在运行时,我应该通过Excel VBA代码传递XSL参数的值,正如我前面提到的。假设我给出了下面的参数值 $job=PXJ_TEST1 $src=Metadata.xml $spath=TEST1 output.xml应采用以下格式 &

我需要使用VBA代码解析xsl及其参数。 我可以使用下面链接中的VBA代码作为参考,但唯一的问题是我需要通过VBA代码传递XSLT参数

我的ds_test.xsl文件

我的输入元数据.xml文件

我的预期输出格式为XML Output.XML

注意:这是我的问题-在运行时,我应该通过Excel VBA代码传递XSL参数的值,正如我前面提到的。假设我给出了下面的参数值

$job=PXJ_TEST1 $src=Metadata.xml $spath=TEST1 output.xml应采用以下格式

<?xml version="1.0" encoding="UTF-8"?>
<DSExport>
<Job Identifier="PXJ_TEST1">
    <Record Identifier="V25S0P1" Type="CustomOutput" Readonly="0">
        <Collection Name="Columns" Type="OutputColumn">
            <SubRecord>
                <Property Name="Name">BEMSID</Property>
                <Property Name="Description">BEMSID: string[max=10]</Property>
                <Property Name="SqlType">12</Property>
                <Property Name="Precision">10</Property>
            </SubRecord>
            <SubRecord>
                <Property Name="Name">EMPL_NM</Property>
                <Property Name="Description">EMPL_NM: string[max=18]</Property>
                <Property Name="SqlType">12</Property>
                <Property Name="Precision">18</Property>
            </SubRecord>
        </Collection>
    </Record>
</Job>
</DSExport>

如果需要设置参数,那么使用TraveNoad的简单方法不起作用,您需要使用页面中只呈现JScript和C++的API,但当然可以使用VBScript或VBA使用相同的API和对象。然后,您可以使用addParameter方法设置参数。

对于本页的读者,下面是使用OP的输入将参数从VBA传递到XSLT的具体实现:

子XSLT变换 '参考MicrosoftXML,v6.0 Dim xmlDoc作为新的MSXML2.DOMDocument60,newDoc作为新的MSXML2.DOMDocument60 将xslDoc作为新的MSXML2.FreeThreadedDOMDocument60 将xslTemp设置为新的MSXML2.XSLTemplate60 Dim xslProc As对象 '加载XML和XSL文件 xmlDoc.async=False 加载C:\Path\To\Input.xml xslDoc.async=False xslDoc.setProperty AllowDocumentFunction,True xslDoc.Load C:\Path\To\XSLT\u Script.xsl '初始化所需的对象 设置xslTemp.stylesheet=xslDoc 设置xslProc=xslTemp.createProcessor 使用xslProc .input=xmlDoc .addParameter作业,PXJ_TEST1'添加参数 .addParameter src,MultiParamXSLT.xml .add参数spath,TEST1 .transform“转换XML” newDoc.LoadXML.output的加载结果树 newDoc.Save C:\Path\To\Output.xml'将输出保存到文件 以 Set xmlDoc=Nothing:Set newDoc=Nothing Set xslDoc=Nothing:Set xslTemp=Nothing:Set xslProc=Nothing 端接头
<?xml version="1.0" encoding="UTF-8"?>
<DSExport>
<Header CharacterSet="CP1252" ExportingTool="IBM InfoSphere DataStage Export" ToolVersion="8" ServerName="HCL-BOEING-DS" ToolInstanceID="EFBI_BAL_OPT" Date="2014-01-21" Time="19.09.04" ServerVersion="9.1" />
<TableDefinitions>
  <Record Identifier="TEST1" DateModified="2013-12-23" TimeModified="11.01.03" Type="MetaTable" Readonly="0">
     <Collection Name="Columns" Type="MetaColumn">
        <SubRecord>
           <Property Name="Name">BEMSID</Property>
           <Property Name="Description">BEMSID: string[max=10]</Property>
           <Property Name="SqlType">12</Property>
           <Property Name="Precision">10</Property>
        </SubRecord>
        <SubRecord>
           <Property Name="Name">EMPL_NM</Property>
           <Property Name="Description">EMPL_NM: string[max=18]</Property>
           <Property Name="SqlType">12</Property>
           <Property Name="Precision">18</Property>
        </SubRecord>
     </Collection>
  </Record>
</TableDefinitions>
</DSExport>
<?xml version="1.0" encoding="UTF-8"?>
<DSExport>
<Job Identifier="PXJ_TEST1">
    <Record Identifier="V25S0P1" Type="CustomOutput" Readonly="0">
        <Collection Name="Columns" Type="OutputColumn">
            <SubRecord>
                <Property Name="Name">BEMSID</Property>
                <Property Name="Description">BEMSID: string[max=10]</Property>
                <Property Name="SqlType">12</Property>
                <Property Name="Precision">10</Property>
            </SubRecord>
            <SubRecord>
                <Property Name="Name">EMPL_NM</Property>
                <Property Name="Description">EMPL_NM: string[max=18]</Property>
                <Property Name="SqlType">12</Property>
                <Property Name="Precision">18</Property>
            </SubRecord>
        </Collection>
    </Record>
</Job>
</DSExport>