首页 文章

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

提问于
浏览
1

我有一个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

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

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

相关问题