[英]Dir loop missing one file in specified folder
我已經編寫了一個宏來處理指定文件夾中所有文件中的數據。 但是,它會跳過文件夾中的第一個文件。 問題是在此行上引用了第一個文件:
FileName = Dir(path)
但下一行引用了下一個文件:
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
將FileName = Dir()
放在循環的末尾 ,緊接在
Loop
線。
重新編輯 :
FileName = Dir()
和FileName = Dir(path)
之間的含義有什么區別?
Dir(path)
初始化Dir
函數,並返回第一個文件/文件夾名稱。 Dir()
始終是對之前的Dir(path)
的后續調用,並返回下一個文件/文件夾。
如果您在未調用Dir(path)
Dir()
情況下調用Dir(path)
,則會出現運行時錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.