循环使用VBA的Txt文件 – DIR()问题

我有以下代码,我试图修改某个特定文件夹中的某些Txt文件。 我首先要检查循环的作品。 但是,当我运行macros代码只能读取第一个文件,然后在strFileName = Dir()有一个运行时错误。 我不确定是什么问题。 我能想到的唯一问题是我正在两个模块表之间移动代码。 该文件夹位置正在保存在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 

看看这些修改。 他们似乎纠正了几件事情,并顺利通过。

 Option Explicit Sub Txt_File_Loop() Dim FolderLocation As String Dim strFileName As String Dim SaveLocation As String 'Location is present in a Text box FolderLocation = Sheets(1).FolderLocationTXTBX.Text 'Environ("TMP") strFileName = Dir(FolderLocation & "\*.txt") Do Until strFileName = "" Debug.Print FolderLocation & "\" & strFileName Module2.Macro1 FolderLocation & "\" & strFileName strFileName = Dir() 'ERROR is Here Loop End Sub Sub Macro1(sFPFN As String) Dim x As String, textline As String Debug.Print sFPFN Open sFPFN For Input As #1 Do Until EOF(1) Line Input #1, textline x = x & textline Loop Close #1 MsgBox x End Sub 

我将文件夹和文件名称作为stringtypesparameter passing。 另外,我不知道为什么你在(FolderLocation & " \ * "有多余的空格;我把它加紧了,有一些拼写错误和未声明的variables,这些可以通过模块顶部的Option Explicit 1来避免使用代码进行标准缩进的练习,如果没有其他的话,它肯定会提高可读性。


¹ 在VBE工具中设置需要variables声明 ►选项►编辑器属性页面将把Option Explicit语句放在每个新创build的代码表的顶部。 这将避免像拼写错误这样的愚蠢的编码错误,也会影响你在variables声明中使用正确的variablestypes。 在没有声明的情况下即时创build的variables都是变体/对象types。 使用Option Explicit被广泛认为是“最佳实践”。