Vba 目录循环在指定文件夹中缺少一个文件
我编写了一个宏来处理指定文件夹中所有文件中的数据。但是,它会跳过文件夹中的第一个文件。问题是第一个文件在这一行被引用:Vba 目录循环在指定文件夹中缺少一个文件,vba,excel,dir,Vba,Excel,Dir,我编写了一个宏来处理指定文件夹中所有文件中的数据。但是,它会跳过文件夹中的第一个文件。问题是第一个文件在这一行被引用: FileName=Dir(路径) 但下一个文件是用这一行引用的: FileName=Dir() 完整代码: Sub data_gatherer() 'skips ESAM_50 'Removes unrealistic data and sums the no. starts/hours run for each pump stream Application
FileName=Dir(路径)
但下一个文件是用这一行引用的:
FileName=Dir()
完整代码:
Sub data_gatherer() 'skips ESAM_50
'Removes unrealistic data and sums the no. starts/hours run for each pump stream
Application.ScreenUpdating = False
Dim sheet As Worksheet
Dim calcSheet As Worksheet
Dim path As String
Dim ColCount As Integer
Dim StreamCode As String
Dim StreamSum As Double
Dim NextRow As Double
Dim FilePath As String
Dim FileName As String
Dim i As Integer
Dim SumRange As range
Dim SheetName As String
Dim sSrcFolder As String
sSrcFolder = "C:\IRIS MACRO TEST ZONE\SPS IRIS Bulk Data\" ' unprocessed data
path = sSrcFolder & "*.csv" 'files withing sSrcFolder
FileName = Dir(path)
Do While FileName <> ""
FileName = Dir() '''''skips first file here'''''''''''''''''''''''''''''''''''''''''''''''
FilePath = sSrcFolder & FileName
If FilePath = "C:\IRIS MACRO TEST ZONE\SPS IRIS Bulk Data\" Then ''' avoids error message for " .csv"
Exit Do
End If
Workbooks.Open (FilePath) 'error here - looks for "" filename
SheetName = Left(FileName, 10)
With Workbooks(FileName).Sheets(SheetName)
ColCount = .Cells(3, .Columns.count).End(xlToLeft).Column 'COUNT COLUMNS WITH DATA need to start with col 2
For i = 2 To ColCount 'i=2 to avoid date column
Call data_cleaner_all(FileName, SheetName, i)
Call StreamCalcs(NextRow, FileName, SheetName, SumRange, i)
Next i
End With
Workbooks(FileName).Saved = True
Workbooks(FileName).Close
Loop
Application.ScreenUpdating = True
End Sub
Sub data_gatherer()'跳过ESAM_50
'删除不切实际的数据,并对每个泵流的启动次数/运行小时数求和
Application.ScreenUpdating=False
将工作表设置为工作表
将计算表设置为工作表
将路径设置为字符串
Dim ColCount为整数
将流代码设置为字符串
双份点心
暗淡的下一步是双重的
将文件路径设置为字符串
将文件名设置为字符串
作为整数的Dim i
模糊范围作为范围
将SheetName设置为字符串
将sSrcFolder设置为字符串
sSrcFolder=“C:\IRIS宏测试区\SPS IRIS批量数据\”'未处理的数据
path=sSrcFolder&“*.csv”带有sSrcFolder的文件
FileName=Dir(路径)
文件名“”时执行此操作
FileName=Dir()跳过此处的第一个文件
FilePath=sSrcFolder&FileName
如果FilePath=“C:\IRIS宏测试区\SPS IRIS批量数据\”,则“””会避免“.csv”的错误消息
退出Do
如果结束
工作簿.Open(FilePath)错误-查找“”文件名
SheetName=左侧(文件名,10)
带工作簿(文件名).Sheets(图纸名)
ColCount=.Cells(3,.Columns.count).End(xlToLeft)。Column的计数包含数据的列需要以col 2开头
对于i=2到ColCount'i=2以避免日期列
调用数据\u cleaner\u all(文件名、表名、i)
调用StreamCalcs(NextRow、文件名、SheetName、SumRange、i)
接下来我
以
工作簿(文件名).Saved=True
工作簿(文件名)。关闭
环
Application.ScreenUpdating=True
端接头
将FileName=Dir()
放在循环的端,直接放在
Loop
线路
编辑re:
FileName=Dir()
Dir(path)
初始化Dir
函数,并返回第一个文件/文件夹名Dir()
始终是对前面出现的Dir(path)
的后续调用,并返回下一个文件/文件夹
如果在未调用Dir(path)
的情况下调用Dir()
,则会出现运行时错误。将FileName=Dir()
放在循环的端,直接放在
Loop
线路
编辑re:
FileName=Dir()
Dir(path)
初始化Dir
函数,并返回第一个文件/文件夹名Dir()
始终是对前面出现的Dir(path)
的后续调用,并返回下一个文件/文件夹
如果调用Dir()
而之前没有调用Dir(path)
,则会出现运行时错误。只需将FileName=Dir()
行移到循环
行之前。太好了,谢谢@Vincent G。FileName=Dir()
FileName=Dir(path)
Dir(Path)
返回与路径对应的第一个文件名。您可以通过使用空字符串参数或不使用参数调用Dir来获取其他文件名。只需将filename=Dir()
行移动到循环
行之前。太好了,谢谢@Vincent G。filename=Dir()之间的含义有什么区别
FileName=Dir(path)
Dir(path)
返回与路径对应的第一个文件名。通过使用空字符串参数或无参数调用Dir,可以获得其他文件名。