Приведенный ниже код позволяет пользователю выбрать диапазон данных в другой книге, а затем вставить его в другой выбор в начальной книге.
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