Уважаемые специалисты, подскажите пожалуйста советом.
Есть макрос, который копирует первые листы всех файлов из выбранной папки в отельную книгу. Нужно чтобы отображалась информация с наименованием исходных листов, откуда был скопирован лист. Не нашёл лучшего, решения, кроме как добавить второе With. Но возможно, есть более красивое решение.
Есть макрос, который копирует первые листы всех файлов из выбранной папки в отельную книгу. Нужно чтобы отображалась информация с наименованием исходных листов, откуда был скопирован лист. Не нашёл лучшего, решения, кроме как добавить второе With. Но возможно, есть более красивое решение.
| Код |
|---|
Sub DataCopy()
Dim foldername As String
Dim Source As Workbook
Dim Target As Workbook
Dim counter As Long
Dim strFile As String
Dim fd As FileDialog
Dim i As Long, m As Long, n As Long
Set Target = ActiveWorkbook
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Выберите папку с отчётами для сохранения."
If .Show = -1 Then
strFolder = .SelectedItems(1) & "\"
Else
MsgBox "Вы не выбрали папку."
Exit Sub
End If
End With
strFile = Dir$(strFolder & "*.xlsx")
counter = 0
While strFile <> ""
Set Source = Workbooks.Open(strFolder & strFile)
With Target.Sheets(1).Range("A1")
i = .CurrentRegion.Rows.Count
For m = 1 To Source.Sheets(1).Range("A4").CurrentRegion.Rows.Count - 1
For n = 0 To Source.Sheets(1).Range("A4").CurrentRegion.Columns.Count - 1
.Offset(i, n) = Source.Sheets(1).Range("A4").Offset(m, n)
Next n
i = i + 1
Next m
End With
counter = counter + 1
Source.Close xlDoNotSaveChanges
strFile = Dir$()
Wend
MsgBox ("Завершено и обработано " & counter & " файлов")
End Sub |
Изменено: - 30.05.2022 12:51:48