использование vba для записи пропусков в xml-файле - PullRequest
0 голосов
/ 23 сентября 2018

Я использую VBA в Excel для записи XML-файла.Я перебираю и делаю замену, используя константы, которые ссылаются на значения ячеек в цикле.Что я не могу понять правильно, так это как пропустить запись раздела, когда ячейка пуста.Я хочу пропустить ячейки цикла a (i, 3) и не записывать строку, если указанная ячейка пуста, но я хочу перейти к следующей замене.Смотрите соответствующий код:

Const head = "<?xml version ""1.0"" encoding=""UTF-8""?>"
Const funct1 = "<Order function=""%%"" "
Const itemtype = "        <Item type=""%%"">"
Dim all
Dim xml As String, i As Long
Dim oPath As String: oPath = "C:\test\test.xml"
Dim intFF As Integer: intFF = FreeFile()
a = Range("A2:BU" & Cells(Rows.Count, 73).End(xlUp).Row)
xml = head
For i = 1 To UBound(a)
   xml = xml & vbNewLine & Replace(funct1, "%%", a(i, 3))
               vbNewLine & Replace(itemtype, "%%", a(i, 31))
Next
Open oPath For Output As #intFF
Print #intFF, xml
Close #intFF

Dim sBuf As String
Dim sTemp As String
Dim int2FF As Integer: int2FF = FreeFile()
Dim sFileName As String
sFileName = "C:\test\test.xml"
Open sFileName For Input As int2FF
Do Until EOF(int2FF)
    Line Input #int2FF, sBuf
    sTemp = sTemp & sBuf & vbCrLf
Loop
Close int2FF

1 Ответ

0 голосов
/ 23 сентября 2018

Проверка количества символов в каждом цикле.Если количество символов = 0 (Len(a(i, 3) = 0)), тогда переходите к следующему i.Вам нужно будет добавить j в качестве счетчика и увеличивать его только тогда, когда вы переходите в свой оператор XML.

Dim j As Long: j = 1

For i = 1 To UBound(a)
    If Len(a(i, 3)) <> 0 Then
        XML = XML & vbNewLine & Replace(funct1, "%%", a(i, 3)) _
        & vbNewLine & Replace(itemtype, "%%", a(i, 31))
        j = j + 1
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...