Logi c:
- Считать файл
- Заменить
"<?xml version='1.0' encoding='UTF-8'?>"
на ""
- Записать данные в временный файл. Если у вас все в порядке с заменой исходного файла, вы также можете это сделать. Измените код соответствующим образом.
- Откройте текстовый файл в Excel
Это то, что вы пытаетесь? ( НЕПРОВЕРЕНО )
Код :
Option Explicit
Sub Sample()
Dim MyData As String
Dim FlName As String, tmpFlName As String
'~~> I am hardcoding the paths. Please change accordingly
FlName = "C:\Sample.xml"
tmpFlName = "C:\Sample.txt"
'~~> Kill tempfile name if it exists
On Error Resume Next
Kill tmpFlName
On Error GoTo 0
'~~> Open the xml file and read the data
Open FlName For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
'~~> Replace the relevant tag
MyData = Replace(MyData, "<?xml version='1.0' encoding='UTF-8'?>", "")
Close #1
'~~> Write to a temp text file
Open tmpFlName For Output As #1
Print #1, MyData
Close #1
Workbooks.OpenText Filename:=tmpFlName, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:="|"
End Sub
Альтернативный способ:
После
'~~> Open the xml file and read the data
Open FlName For Binary As #1
MyData = Space$(LOF(1))
Get #1, , MyData
'~~> Replace the relevant tag
MyData = Replace(MyData, "<?xml version='1.0' encoding='UTF-8'?>", "")
Close #1
используйте
strData() = Split(MyData, vbCrLf)
, а затем запишите этот массив в Excel и используйте .TextToColumns