我正在将多个csv文件读入excel进行一些数字运算。文件读取似乎与每个插入了csv文件名的excel列一起使用以进行确认。奇怪的是。每个csv文件名都正确插入到工作表中,但数据与第一个文件完全相同。
有没有办法刷新/重置某些东西,所以下一个读取文件数据实际上是下一个文件?
Excel VBA代码段:
Public Const sRawFilePath As String = "\\server1\Sample.RAW.Files\"
----------------
Sub ImportCSV()
Dim sFullFilePath, sFile As String
fFIle = FreeFile()
sFile = Dir(sRawFilePath & "*.csv")
sFullFilePath = sRawFilePath & sFile
While sFile <> ""
Open sFullFilePath For Input As fFIle
While Not EOF(fFIle)
Line Input #fFIle, sLine
""
"take the sLine string and separate the comma delimited values for insertion into columns "
"This part works fine"
""
Wend
Close fFIle
sFile = Dir()
Wend
End Sub
单步执行代码我可以确认下一个文件是否在队列中,但是读取数据不代表下一个文件,只是第一个文件,...并且即使读取了20多个文件,也始终是第一个文件。
PS - 这个论坛是一个了不起的资源。
答案 0 :(得分:0)
您应该在后续调用中执行Dir(sRawFilePath & "*.csv")
,而不是在每次调用中执行Dir
。该错误导致您一次又一次地重新读取第一个文件。
答案 1 :(得分:0)
问题是您定义sFullFilePath
会锁定您正在打开的文件。因此,即使您使用Dir
成功循环遍历文件,也只会打开第一个文件,因为您将其锁定。不要使用该变量:
'Change this line
Open sFullFilePath For Input As fFIle
'To be this instead
Open sRawFilePath & sFile For Input As fFIle