在vba中读取csv文件不会移动到下一条记录,而是下一列
下面是Access应用程序的代码。正在发生的是正在读取包含记录的csv文件。如果未满足正确的条件,则程序需要转到csv文件中的下一条记录并继续处理。然而,当这种情况发生在“GoTo NEXT_RECORD”行时,它会立即跳到“NEXT_RECORD:Wend”并再次启动循环。但是,它不读取下一条记录,而是读取下一列。我需要知道如何将指针移动到下一条记录,而不是下一列。感谢您的帮助在vba中读取csv文件不会移动到下一条记录,而是下一列,vba,Vba,下面是Access应用程序的代码。正在发生的是正在读取包含记录的csv文件。如果未满足正确的条件,则程序需要转到csv文件中的下一条记录并继续处理。然而,当这种情况发生在“GoTo NEXT_RECORD”行时,它会立即跳到“NEXT_RECORD:Wend”并再次启动循环。但是,它不读取下一条记录,而是读取下一列。我需要知道如何将指针移动到下一条记录,而不是下一列。感谢您的帮助 Public Sub ReadCSV() Const FILE_NAME = "C:\files\test
Public Sub ReadCSV()
Const FILE_NAME = "C:\files\test.csv"
On Error GoTo EH
Dim sX As String
Dim sSSN As String
Dim sName As String
Open FILE_NAME For Input As #1
'read to the end of the line to skip header row
While sX <> Chr(13)
sX = Input(1, #1)
Wend
sX = Input(1, #1)
While Not EOF(1)
Input #1, sSSN
If Len(sSSN) <> 11 Then
Debug.Print "bad SSN: " & sSSN
GoTo NEXT_RECORD
End If
Input #1, sName
Debug.Print sSSN & vbTab & sName
NEXT_RECORD:
Wend
GoTo FINISH
EH:
With Err
MsgBox .Number & vbCrLf & .Source & vbCrLf & .Description
.Clear
End With
FINISH:
Close #1
End Sub
解决方案 在恢复循环之前,读取到行的末尾。这将绕过其他字段。下面是一些代码,使用输入函数一次读取一个字符,直到到达回车符(字符13)。然后,它再读取一个字符以绕过换行符(字符10)。Windows将Chr(13)和Chr(10)组合用于线条端点 将以下行放在Goto的正前方,使其看起来像这样:
SSN,Name
684-92-4567,Marshall Applewhite
55589,Shoko Ashara
874-96-5124,Jim Jones
'read to the end of the line
sX = ""
While sX <> Chr(13)
sX = Input(1, #1)
Wend
sX = Input(1, #1)
'now safe to move to next record
GoTo NEXT_RECORD
“读到行尾
sX=“”
而sX Chr(13)
sX=输入(1,#1)
温德
sX=输入(1,#1)
“现在可以安全地进入下一个记录了
转到下一张唱片
这是在例程开始处重复几行代码,这些代码执行相同的操作,以跳过CSV的标题行
Input#语句用于一次读取一个字段(读取到逗号或行尾),因此在继续之前必须跳到末尾
参考资料