Вывод в exel (VBA)

Ernest

Гуру форума
Регистрация
25 Сен 2006
Сообщения
270
Реакции
71
Доброго времени суток друзья, есть небольшой скрипт, который выводит данные из 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 в код то появляется ошибка, скрипт обрабатывает только первую строку файла и не находит данных, есть у кого нибудь мысли?
 
Последнее редактирование:
Назад
Сверху