EXCEL VBA写 - 读取文件 - BUG?

时间:2014-04-01 23:21:05

标签: excel vba

我一直在用文件输入问题绞尽脑汁,我终于把它归结为两个问题,我可以通过错误62,“读过去的文件结束”,但这个我不能过去了。

有人可以告诉我,如果我做错了/验证吗?

基本上(这个)代码写了两行#

?xml version="1.0"?
A Second Line

第1部分(写入文件)中的调试语句将文本打印为

?xml version="1.0"?
A Second Line

第2部分(读取文件)中的调试语句将文本打印为

ÿþ?xml version="1.0"?
A Second Line

如您所见,输入或添加了两个额外的字符 文件开头的输出流。

为了完整性添加了第二行,以便更详细地显示它只是第一行被拧紧。

当我查看记事本时,没有什么额外的,这些额外内容来自何处/何处?

任何想法,提前谢谢, 问候 肖恩

Sub writeXMLTest()

'Part 1 - Write the file

Dim FSO As Object
Dim NewFile As Object
Dim FullPath As String
Dim XMLFileText As String

FullPath = "E:\TESTFILE.xml"
'On Error GoTo Err:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set NewFile = FSO.CreateTextFile(FullPath, 1, 1)

XMLFileText = ""
XMLFileText = XMLFileText & "?xml version=" & Chr(34) & "1.0" & Chr(34) & "?" & vbNewLine
NewFile.Write (XMLFileText)
Debug.Print XMLFileText

XMLFileText = XMLFileText & "A Second Line" & vbNewLine
NewFile.Write (XMLFileText)
Debug.Print XMLFileText

NewFile.Close

'Part 1 - Complete

'Part 2 - Now to read the file

Dim FileNum As Integer, i As Integer
Dim s As String

' fpath = Application.GetOpenFilename

FileNum = FreeFile()
Open FullPath For Input As #FileNum

i = 1
While Not EOF(FileNum)

    Line Input #FileNum, s    ' read in data 1 line at a time
    Debug.Print s

Wend

End Sub

1 个答案:

答案 0 :(得分:0)

快速拍摄:通常,xml文件使用UTF8编码。但FileSystemObject无法处理UTF8。您可以使用ADODB.Stream对象执行此操作(在VBA中读取和写入UTF8文件) - 您可以在网络上找到示例。