我有一个Excel 2016模板工作簿,其中有一个区域供用户填充数据(一些复制粘贴将涉及公式) . 用户启动VBA宏以在 XML-data
中导出它 . 我遇到的问题是整个XML导出区域并不总是一直填充(大量分散的数据),导出的XML-s最终会出现我想要摆脱的空标签,但不确定,怎么做它 .
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 回答
我想我最终比我预想的更容易解决这个难题 . 我不需要在Excel工作表中使数据输入范围如此之大 . 我可以将它设为一行,它会随着新条目自动放大 .
遗憾的是,一旦数据被删除,数据输入范围看起来就不会减少,但是VBA代码可能有助于在导出完成后将其减少回单行 .