【发布时间】:2023-03-23 05:47:01
【问题描述】:
我有以下代码,我试图修改特定文件夹中的一些 Txt 文件。我首先要检查循环是否有效。但是,当我运行宏时,代码只能读取第一个文件,然后在 strFileName = Dir() 处出现运行时 5 错误。我不确定问题是什么。我能想到的唯一问题是我在两个模块表之间移动代码。文件夹位置保存在 Excel 工作簿工作表 1 中的 txt 框中。
Sub Txt_File_Loop()
Public TextFile As String
Dim FolderLocation As String
Dim strFielName As String
Dim SaveLocation As String
'Location is present in a Text box
FolderLocation = Sheets(1).FolderLocationTXTBX.Text
strFileName = Dir(FolderLocation & " \ * ")
Do Until strFileName = ""
TextFile = FolderLocation & "\" & strFileName
Module2.Macro1
strFileName = Dir() 'ERROR is Here
Loop
End Sub
Sub Macro1()
Dim x As String
Open TextFile For Input As #1
Do Until EOF(1)
Line Input #1, textline
x = x & textline
Loop
Close #1
MsgBox x
End Sub
【问题讨论】:
-
uhh.. 你的代码是如何编译的?你缺少一个
Loop语句来关闭Do While...你也有Open TextFile行 inside 循环,那么它怎么知道文件结尾(EOF)在哪里在打开它之前?您的第一部分似乎根本不是任何子程序的一部分。根据您提供的代码,strFileName = Dir()上不可能发生错误... -
strFileName = Dir(FolderLocation & " \ * ")你的意思是strFileName = Dir(FolderLocation & "\")?还有debug.print FolderLocation给你什么? -
我的意思是在macro1中添加一个Loop语句。
-
debug.print FolderLocation 只是给了我文件夹的链接。例如 C:\文件夹\子文件夹。我尝试删除 * 但它不起作用,我仍然得到同样的错误。
-
... 或更笼统地说:在代码模块的顶部包含
Option Explicit,修改代码直到它编译,然后告诉我们您还剩下什么错误。照原样,代码还有很多其他更重要的问题......