Excel到XML VBA - 需要跳过空标签

时间:2018-05-21 14:31:11

标签: xml excel-vba xsd vba excel

我有一个Excel 2016模板工作簿,其中有一个区域供用户填充数据(一些复制粘贴正在进行+涉及的公式)。用户启动VBA宏以在XML-data中导出它。我遇到的问题是整个XML导出区域并不总是一直填充(大量分散的数据),导出的XML-s最终会出现我想要摆脱的空标签,但不确定,怎么做它

enter image description here

VBA代码如下:

Sub XML_export()

XMLName = "C:\XML" & "\" & "Transaction_SERVICE_" & Format(Now, "yyyymmddhhmmss") & ".xml"
ActiveWorkbook.XmlMaps("Data_Map").Export Url:=XMLName

End Sub

和XML文件的XSD架构:

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Data">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Transaction">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="Item" type="xs:string" />
              <xs:element minOccurs="0" name="Description" />
              <xs:element minOccurs="0" name="Quantity" type="xs:string" />
              <xs:element minOccurs="0" name="FromWHS" type="xs:string" />
              <xs:element minOccurs="0" name="ToWHS" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
         </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

这仍将最终为Excel工作表中的每个未填充的行提供emptry <Transaction/>标记。我怎么能在XML文件中获得4个填充的Transaction标签?目前,它仍将始终导出10个Transaction标签,其中6个未填充(基于示例)。 XSD是答案吗?

1 个答案:

答案 0 :(得分:0)

我想我最终比预想的更容易解决这个难题。我不需要在Excel工作表中使数据输入范围如此之大。我可以将它设为一行,它会随着新条目自动放大。

不幸的是,删除数据后数据输入范围看起来不会减少,但是VBA代码可能有助于在导出完成后将其减少回单行。