0

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

4

2 回答 2

0

Dir(sRawFilePath & "*.csv")您应该只Dir在后续调用中执行,而不是在每次调用中执行。该错误会导致您一次又一次地重新读取第一个文件。

于 2013-09-12T16:16:35.663 回答
0

问题是您定义sFullFilePath了要打开的文件中的哪些锁。因此,即使您使用 成功循环了文件Dir,您也只会打开第一个文件,因为您已将其锁定。根本不要使用该变量:

'Change this line
Open sFullFilePath For Input As fFIle

'To be this instead
Open sRawFilePath & sFile For Input As fFIle 
于 2013-09-12T17:45:36.903 回答