Excel в XML VBA - необходимо пропустить пустые теги - PullRequest
0 голосов
/ 21 мая 2018

У меня есть шаблонная книга Excel 2016 с областью, которую пользователи могут заполнять данными (происходит некоторое копирование + формулы).Пользователи запускают макрос VBA, чтобы экспортировать его в XML-data.У меня проблема в том, что вся область экспорта XML не всегда заполнена одинаково (много разбросанных данных), а экспортированные XML-файлы заканчиваются пустыми тегами, от которых я бы хотел избавиться, но не уверен, как это сделать.it.

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

и схема XSD для файла XML:

<?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>

Это все равно закончится тем, что даст мне пустую метку <Transaction/> для каждой незаполненной строки в листе Excel.Как я могу просто получить 4 заполненных тега Transaction в файле XML?В настоящее время он по-прежнему будет всегда экспортировать 10 Transaction тегов, причем 6 из них не заполнены (на основе примера).XSD ответ?

1 Ответ

0 голосов
/ 22 мая 2018

Мне кажется, я решил эту головоломку легче, чем ожидал.Мне не нужно увеличивать диапазон ввода данных на листе Excel.Я могу сделать это одной строкой, и она будет автоматически увеличиваться вместе с новыми записями.

К сожалению, не похоже, что диапазон ввода данных уменьшается после удаления данных, однако код VBA может помочь уменьшить его обратно до единогострока после завершения экспорта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...