Как я могу импортировать выборки из нескольких листов в идентичные места в другой книге? - PullRequest
0 голосов
/ 04 марта 2020

Приведенный ниже код позволяет пользователю выбрать диапазон данных в другой книге, а затем вставить его в другой выбор в начальной книге.

Dim wkbCrntWorkBook As Workbook
Dim wkbSourceBook As Workbook
Dim rngSourceRange As Range
Dim rngDestination As Range
Set wkbCrntWorkBook = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
    .Filters.Clear
    .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count > 0 Then
        Workbooks.Open .SelectedItems(1)
        Set wkbSourceBook = ActiveWorkbook
        Set rngSourceRange = Application.InputBox(prompt:="Select source range", Title:="Source Range", Default:="A1", Type:=8)
        wkbCrntWorkBook.Activate
        Set rngDestination = Application.InputBox(prompt:="Select destination cell", Title:="Select Destination", Default:="A1", Type:=8)
        rngSourceRange.Copy rngDestination
        rngDestination.CurrentRegion.EntireColumn.AutoFit
        wkbSourceBook.Close False
    End If
End With

Импортируемые данные находятся в одном и том же месте, но на разных листах импортируемой книги.

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

Как изменить этот макрос, чтобы все листы можно было импортировать одновременно, и заменить старые данные? в старой книге?

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

Индекс вне диапазона

Идея состояла в том, чтобы создать al oop, чтобы сделать это в соответствующих местах, чтобы скопировать и вставить все новые значения с каждого из восьми листов в обоих, в старую рабочую книгу.

Dim wkbCrntWorkBook As Workbook
Dim wkbSourceBook As Workbook
Dim rngSourceRange As Range
Dim rngDestination As Range
Set wkbCrntWorkBook = ActiveWorkbook
With Application.FileDialog(msoFileDialogOpen)
    .Filters.Clear
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count > 0 Then
        Workbooks.Open .SelectedItems(1)
        Set wkbSourceBook = ActiveWorkbook
        Set rngSourceRange = ActiveWorkbook.Sheets("Sheet1").Range("B4:K53").Value
        wkbCrntWorkBook.Activate
        Set rngDestination = ActiveWorkbook.Sheets("Sheet1").Range("B4:K53").Value
        wkbCrntWorkBook.Activate
        rngSourceRange.Copy rngDestination
        rngDestination.CurrentRegion.EntireColumn.AutoFit
        wkbSourceBook.Close False
    End If
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...