从文本文件中读取格式化数据

时间:2017-03-15 16:34:40

标签: vba file text input

以下代码从包含每行两个数字到X和Y的文本文件中读取值(在循环中)。循环的第一次迭代为X和Y提供正确的值(70,210)。在下一次迭代之后,X和Y值不是文件中包含的值(210,210用于第二次迭代而不是0,210)。我犯了一个错误,但我似乎无法找到它!

Sub main()
Dim X As Double
Dim Y As Double

Open "perforatedcircles.txt" For Input As #1

Do While Not EOF(1)
Input #1, X, Y
Loop
Close #1

End Sub

“perforatedcircles.txt”的样本内容:

70.000 210.000
0.000 210.000
-70.000 -210.000

1 个答案:

答案 0 :(得分:0)

输入文件是如何创建的?它看起来与Input#directive期望的格式不同。

https://msdn.microsoft.com/en-us/library/aa243386(v=vs.60).aspx

"使用Input#读取的数据通常写入具有Write#的文件。仅对在输入或二进制模式下打开的文件使用此语句。"

"注意为了能够使用Input#将文件中的数据正确读入变量,请使用Write#语句而不是Print#语句将数据写入文件。使用Write#确保每个单独的数据字段都被正确分隔。"

考虑到空格分隔,您需要以不同方式解析文件。这是一个例子:

Dim iLine As Integer, 
Dim sFile As String
Dim sData As String
Dim sLine() As String
Dim sSplitLine() As String
Dim x as Double
Dim y as Double

'read the whole file into 1 string variable
sFile = "perforatedcircles.txt"
Open sFile For Input As #1
sData = Input(LOF(1), 1)
Close #1
sLine = Split(sData, vbCrLf)
For iLine = 0 To UBound(sLine)
    sSplitLine = Split(sLine(UBound(sLine)), " ")

    x = CDbl(sSplitLine(0))
    y = CDbl(sSplitLine(1))
    'Do Stuff with your numbers here
Next iLine