VBA:行输入#,下一个文件不显示新数据

时间:2013-09-12 16:07:56

标签: excel vba csv input line

我正在将多个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 - 这个论坛是一个了不起的资源。

2 个答案:

答案 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