Текущая проблема - операторы = dir в нижней части цикла DFile вызывают ошибку. Я не понимаю, почему одно из операторов = dir вызывает проблему, а другое - нет?
Sub for_each_workbook()
Dim folderpath As String, Dfile As String
Dim sourcepath As String, sourcefile As String
Dim DWorkbook As Workbook
Dim SWorkbook As Workbook
Dim DWorksheet As Worksheet
Dim SWorksheet As Worksheet
Dim ws As Worksheet
Dim DateRange As Range, cell As Range
Dim Date_lastrow As Long
folderpath = ‘filepath1
Dfile = Dir(folderpath & "*.xlsx")
Do While Len(Dfile) > 0
DoEvents
On Error GoTo 0
Set DWorkbook = Workbooks.Open(folderpath & Dfile, UpdateLinks:=0) 'set DWorkbook as recently opened Destination Workbook
Set DWorksheet = DWorkbook.Sheets(1)
sourcepath = ‘filepath2
sourcefile = Dir(sourcepath & "*.xlsx")
Do While Len(sourcefile) > 0
On Error GoTo 0
Set SWorkbook = Workbooks.Open(sourcepath & "\" & sourcefile, UpdateLinks:=0) 'set SWorkbook to recently opened Source workbook
Set SWorksheet = SWorkbook.Sheets(1)
If SWorksheet.Range("B2").Value = DWorksheet.Range("B5").Value Then 'check if source sheet is for same system as destination workbook
DWorkbook.Activate
For Each ws In Worksheets 'for each worksheet in correct source workbook, do the following:
Date_lastrow = Range("a999").End(xlUp).Row 'find last row
Set DateRange = Range("A8:A" & Date_lastrow)
'do vlookup
Next ws
Else: SWorkbook.Close savechanges:=False
End If
DoEvents
sourcefile = Dir 'not working?
Loop
DoEvents
DWorkbook.Close savechanges:=True
Dfile = Dir 'not working?
Loop
End Sub
Макрос Excel должен выполнять следующие действия:
- открыть файл Excel в папке 1
- Открыть файл Excel в папке 2
- подтвердить, что файл Excel папки 2 является правильным (путем проверки значения ячейки)
- Выполнение задачи (если правильно) в каждом рабочем листе
- цикл по файлам в папке 2, пока задача не будет завершена
- перейти к следующему файлу в папке 1
Я не смог протестировать большинство из вышеперечисленных из-за текущих проблем, но, похоже, он работает до конца цикла.