Цель этого макроса - объединить данные из нескольких файлов Excel разных месяцев в один мастер-файл Excel.Я создал для каждого месяца вкладку в файле master excel (см. Прилагаемое изображение), к которой я хотел бы, чтобы данные располагались и накладывались друг на друга.

Я нашел несколько полезных кодов, которые мне приходилось работать несколько раз, но после модификаций теперь они не работают.Вот некоторые проблемы, которые мне нужно решить, прежде чем он сможет работать так, как я хочу:
Этот код построен с фиксированным диапазоном, который копируется.Файлы Excel, которые я просматриваю, будут иметь переменные диапазоны.
Код продолжает ломаться в строке, которая читает Set wbTemp = Workbooks.Open(Filename:=FilePath & MyFile, ReadOnly:=True)
.Это может быть из-за того, что я тестирую файлы Excel в разных папках с одинаковыми именами месяца?
Я получаю следующую ошибку: «Ошибка времени выполнения« 1004 »: Microsoft Excelне удается получить доступ к файлу 'S: \ Actg \ TESTING \ September \ Loans_20180920.csv'. Возможны несколько причин: -Имя файла или путь не существует. -Файл используется другой программой ".Я просмотрел и удалил все остальные файлы Excel, которые я тестировал, кроме файлов в папке сентябрь, но я все еще получаю эту ошибку.
Есть ли способ изменить этот код, чтобы мне не приходилось копировать его 12 раз за каждый месяц?Я подумал, что было бы неплохо, если бы было предложено ввести текстовое поле, в котором я указывал месяц, который я хотел скачать.В любом случае ... Я уже скопировал его 12 раз, чтобы не было никакой дополнительной работы.
Исходный код: Дэн Вагнер ( Копирование рабочих листов из нескольких рабочих книг в текущую рабочую книгу )
Вот код, с которым я работаю:
Sub Stack_Overflow_Example()
Dim MyFile As String, MyFiles As String, FilePath As String
Dim erow As Long
Dim wbMaster As Workbook, wbTemp As Workbook
Dim wsMaster As Worksheet, wsTemp As Worksheet
FilePath = "S:\Actg\TESTING\September\"
MyFiles = "S:\Actg\TESTING\September\*.csv"
MyFile = Dir(MyFiles)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Set wbMaster = ThisWorkbook
Set wsMaster = wbMaster.Sheets("September")
Do While Len(MyFile) > 0
If MyFile <> "master.xlsm" Then
Set wbTemp = Workbooks.Open(Filename:=FilePath & MyFile, ReadOnly:=True)
Set wsTemp = wbTemp.Sheets(1)
With wsMaster
erow = .Range("A" & .Rows.Count).End(xlUp).Row
wsTemp.Range("A2:U88").Copy
.Range("A" & erow).Offset(1, 0).PasteSpecial xlPasteValues
End With
wbTemp.Close False
Set wsTemp = Nothing
Set wbTemp = Nothing
End If
MyFile = Dir
Loop
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.