用VBA读取XML文件

用VBA读取XML文件,vba,excel,Vba,Excel,我正在尝试读取XML文件(格式不正确)。下面是我拥有的实际XML文件 TableFroothSamaZonForestRainforest3SeptPassHealthCheckC:\PracSession\ABC.png” 现在我正试图阅读这篇文章并保存XML格式,但无法进一步了解 设置所需格式并保存: 桌子 水果 亚马逊 森林 雨林 3. 九月 通过 健康检查 C:\PracSession\ABC.png“ 我可以检查格式,但无法保存。下面是我尝试过的代码 Public Sub Cre

我正在尝试读取XML文件(格式不正确)。下面是我拥有的实际XML文件

TableFroothSamaZonForestRainforest3SeptPassHealthCheckC:\PracSession\ABC.png”
现在我正试图阅读这篇文章并保存XML格式,但无法进一步了解

设置所需格式并保存:


桌子
水果
亚马逊
森林
雨林
3.
九月
通过
健康检查
C:\PracSession\ABC.png“
我可以检查格式,但无法保存。下面是我尝试过的代码

Public Sub Create_Report()
myFile = "C:\Prac_Session\OLB.xml"
Dim fso As FileSystemObject: Set fso = New FileSystemObject
Set txtStream = fso.OpenTextFile(myFile, ForReading, False)
Do While Not txtStream.AtEndOfStream
    Debug.Print txtStream.ReadLine
    Tempstr = ">" & vbNewLine & "<"
    a = Replace(txtStream.ReadLine, "><", Tempstr)
    Debug.Print a
    ''Now to save.??''
Loop
txtStream.Close

End Sub
公共子创建_报告()
myFile=“C:\Prac\u Session\OLB.xml”
将fso设置为FileSystemObject:设置fso=新建FileSystemObject
设置txtStream=fso.OpenTextFile(myFile,ForReading,False)
不使用txtStream.AtEndOfStream时执行此操作
调试。打印txtStream.ReadLine

Tempstr=“>”&vbNewLine&“我相信这样做可以:

Sub foo()
Dim objFSO
Const ForReading = 1
Const ForWriting = 2
Dim objTS 'define a TextStream object
Dim strContents As String
Dim fileSpec As String

fileSpec = "C:\Prac_Session\OLB.xml" 'change the path to whatever yours ought to be
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading)

strContents = objTS.ReadAll 'would use read all to read the whole file into memory

'Do While Not objTS.AtEndOfStream
'    strContents = strContents & " " & objTS.ReadLine 'Read line by line and store all lines in strContents
'Loop
Tempstr = ">" & vbCrLf & "<" 'instead of vbNewLine
strContents = Replace(strContents, "><", Tempstr)
objTS.Close

Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting)
objTS.Write strContents
objTS.Close
End Sub
Sub-foo()
Dim objFSO
常数ForReading=1
写入常数=2
Dim objTS'定义文本流对象
作为字符串的Dim STRCONTENT
Dim fileSpec作为字符串
fileSpec=“C:\Prac\u Session\OLB.xml”'将路径更改为您应该选择的路径
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objTS=objFSO.OpenTextFile(fileSpec,ForReading)
strContents=objTS.ReadAll'将使用read all将整个文件读入内存
'不在objTS.AtEndOfStream时执行
“strContents=strContents&”“&objTS.ReadLine”逐行读取并将所有行存储在strContents中
'循环

Tempstr=“>”&vbCrLf&“我相信这样做可以:

Sub foo()
Dim objFSO
Const ForReading = 1
Const ForWriting = 2
Dim objTS 'define a TextStream object
Dim strContents As String
Dim fileSpec As String

fileSpec = "C:\Prac_Session\OLB.xml" 'change the path to whatever yours ought to be
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(fileSpec, ForReading)

strContents = objTS.ReadAll 'would use read all to read the whole file into memory

'Do While Not objTS.AtEndOfStream
'    strContents = strContents & " " & objTS.ReadLine 'Read line by line and store all lines in strContents
'Loop
Tempstr = ">" & vbCrLf & "<" 'instead of vbNewLine
strContents = Replace(strContents, "><", Tempstr)
objTS.Close

Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting)
objTS.Write strContents
objTS.Close
End Sub
Sub-foo()
Dim objFSO
常数ForReading=1
写入常数=2
Dim objTS'定义文本流对象
作为字符串的Dim STRCONTENT
Dim fileSpec作为字符串
fileSpec=“C:\Prac\u Session\OLB.xml”'将路径更改为您应该选择的路径
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objTS=objFSO.OpenTextFile(fileSpec,ForReading)
strContents=objTS.ReadAll'将使用read all将整个文件读入内存
'不在objTS.AtEndOfStream时执行
“strContents=strContents&”“&objTS.ReadLine”逐行读取并将所有行存储在strContents中
'循环

Tempstr=“>”&vbCrLf&“MSXML DOM库中隐藏了一个漂亮的打印功能。这篇博文有一些示例源代码

MSXML DOM库中隐藏了一个漂亮的打印功能。这篇博文有一些示例源代码

为什么不使用DOM来处理xml文件?将其视为文本文件可能会导致问题,这正是您所看到的for@PankajJaju不,谢谢对不起,但是这个XML有什么不正确的地方吗?我检查了这个XML是否格式正确。是否需要从中提取一些数据?如果是的话,那么就有一个方便的库,为什么不使用DOM来处理xml文件呢?将其视为文本文件可能会导致问题,这正是您所看到的for@PankajJaju不,谢谢对不起,但是这个XML有什么不正确的地方吗?我检查了这个XML是否格式正确。是否需要从中提取一些数据?如果是的话,那就有一个方便的图书馆。不用担心,很高兴能帮上忙……)@请你把我的回答记下来作为回答好吗?谢谢。不用担心,很高兴能帮忙……)@请你把我的回答记下来作为回答好吗?谢谢