Макрос для просмотра нескольких файлов Excel и загрузки данных с каждого - PullRequest
0 голосов
/ 19 октября 2018

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

enter image description here

Я нашел несколько полезных кодов, которые мне приходилось работать несколько раз, но после модификаций теперь они не работают.Вот некоторые проблемы, которые мне нужно решить, прежде чем он сможет работать так, как я хочу:

  1. Этот код построен с фиксированным диапазоном, который копируется.Файлы Excel, которые я просматриваю, будут иметь переменные диапазоны.

  2. Код продолжает ломаться в строке, которая читает 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

Пожалуйста, дайте мне знать, если у вас есть дополнительные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...