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