循环打开每个文件
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
我正在编写一个需要从目录中的文件中提取文本的子例程。套路如下。只要目录中只有一个文件,它就可以工作。当有多个时,它告诉我下面的 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