Вывод в exel (VBA)

Тема в разделе "Другие языки", создана пользователем Ernest, 5 июл 2017.

Метки:
Модераторы: Цукер
  1. Ernest

    Ernest

    Регистр.:
    26 сен 2006
    Сообщения:
    252
    Симпатии:
    60
    Доброго времени суток друзья, есть небольшой скрипт, который выводит данные из xml в таблицу exel, но формат xml изменился и скрипт работать перестал, основные изменения только в добавлении лишних символов:


    Код:
    Sub ÎòêðûòüÂûïèñêó()
        Dim FileNum As Long
        Dim FileName As Variant
      
        Dim mXML As Object
    
        Dim ËèöåâîéÑ÷åò, ÄàòàÂûïèñêè As String
        Dim ÂõîäÿùèéÎñòàòîê, ÎáîðîòûÏîÄåáåòó, ÎáîðîòûÏîÊðåäèòó, ÈñõîäÿùèéÎñòàòîê As Double
        Dim ÔîðìàòÂûïèñêè As String
      
        FileName = Application.GetOpenFilename("Ôàéëû äàííûõ(*.dat), *.dat", 1, "Ôàéëû äàííûõ")
        If FileName <> False Then
           FileNum = FreeFile
           Open FileName For Input As FileNum
           Line Input #FileNum, xTEMP
           Close #FileNum
           i = 0
           j = 0
           xLine = nill
           If _
                Mid(xTEMP, 1, 6) = "<?xml " _
           Or _
                Mid(xTEMP, 1, 6) = "<ED211" _
           Then
             Open FileName For Input As FileNum
             Do Until EOF(FileNum)
                Line Input #FileNum, xT0
                xLine = xLine + xT0
             Loop
            
             ÔîðìàòÂûïèñêè = "ED211"
            
             xLine = Mid(xLine, InStr(xLine, "<ED211"))
             xLine = Mid(xLine, 1, InStr(xLine, "</ED211>") + 7)
            
             If InStr(xLine, "<TransInfo") <> 0 _
             Then
              
                Set mXML = CreateObject("MSXML2.DOMDocument")
              
                mXML.loadXML (xLine)
              
                If mXML.parseError.errorCode Then
                    If MsgBox(mXML.parseError.reason, vbInformation + vbOKOnly) = vbOK Then xERR = True
                Else
              
                    Set currNode = mXML.documentElement
                  
                    ÄàòàÂûïèñêè = eD(currNode.getAttribute("AbstractDate"))
                    ËèöåâîéÑ÷åò = currNode.getAttribute("Acc")
                    If currNode.getAttribute("EnterBal") <> 0 Then ÂõîäÿùèéÎñòàòîê = currNode.getAttribute("EnterBal") / 100
                    If currNode.getAttribute("DebetSum") <> 0 Then ÎáîðîòûÏîÄåáåòó = currNode.getAttribute("DebetSum") / 100
                    If currNode.getAttribute("CreditSum") <> 0 Then ÎáîðîòûÏîÊðåäèòó = currNode.getAttribute("CreditSum") / 100
                    If currNode.getAttribute("OutBal") <> 0 Then ÈñõîäÿùèéÎñòàòîê = currNode.getAttribute("OutBal") / 100
              
                    Set childNode = currNode.FirstChild
                  
                    ReDim xALL(currNode.childNodes.Length, 8)
                  
                    While Not childNode Is Nothing
                        If childNode.baseName = "TransInfo" Then
                            xALL(i, 0) = True
                            xALL(i, 1) = childNode.getAttribute("AccDocNo")
                            xALL(i, 2) = childNode.getAttribute("TransKind")
                            xALL(i, 3) = childNode.getAttribute("BICCorr")
                            xALL(i, 4) = childNode.getAttribute("PayerPersonalAcc")
                            xALL(i, 5) = childNode.getAttribute("PayeePersonalAcc")
                            If childNode.getAttribute("DC") = 1 Then
                                xALL(i, 6) = childNode.getAttribute("Sum") / 100
                            Else
                                xALL(i, 7) = childNode.getAttribute("Sum") / 100
                            End If
                            i = i + 1
                        End If
                        Set childNode = childNode.nextSibling
                    Wend
                    For j = 0 To i - 1
                    Next j
                End If
            
             End If
           Else
    Если добавлять ed в код то появляется ошибка, скрипт обрабатывает только первую строку файла и не находит данных, есть у кого нибудь мысли?
     
    Последнее редактирование: 5 июл 2017
  2. xackera

    xackera Создатель

    Регистр.:
    2 мар 2013
    Сообщения:
    11
    Симпатии:
    0
    У вас не просто добавление лишних символов. У Вас структура xml файла поменялась.