循环打开每个文件

Opening Each File in a Loop

我正在编写一个需要从目录中的文件中提取文本的子例程。套路如下。只要目录中只有一个文件,它就可以工作。当有多个时,它告诉我下面的 Set intFSO = intFSO.OpenTextFile(filePath, 1) 行。

我想我需要做一些事情来重置下一个文件,但我似乎无法弄清楚它是什么。有什么建议吗?

Sub ExtractEDI(folPath)
  Dim sName, fil
  Dim intFSO
  Dim filePath

  Set intFSO = CreateObject("Scripting.FileSystemObject")

  For Each fil In fso.GetFolder(folPath).Files
    filePath = folpath & "\" & fil.Name
    Set intFSO = intFSO.OpenTextFile(filePath, 1)

    'will process file here

    intFSO.Close
  Next
  Set intFSO = Nothing
End Sub

此脚本还有更多内容。递归调用上面的例程以遍历子目录。所有这些都工作正常。

Set intFSO = intFSO.OpenTextFile(filePath, 1)
'   ^^^^^^   ^^^^^^

如果您打算在下一次迭代中再次使用它,请不要将您的 FileSystemObject 实例替换为文件句柄。为文件使用不同的变量。并删除整个路径连接 / OpenTextFile shebang。您可以直接从 File 对象打开文件。

这就是您所需要的(假设 fso 是一个全局 FileSystemObject 实例):

Sub ExtractEDI(folPath)
  For Each fil In fso.GetFolder(folPath).Files
    Set f = fil.OpenAsTextStream

    'will process file here

    f.Close
  Next
End Sub