Макрос для перемещения или копирования данных между книгами Excel
Эта статья научит вас, как копировать или передавать данные между электронными таблицами в Microsoft Excel с помощью VBA. В этом конкретном примере мы также научим вас объединять данные с помощью запроса на добавление. Эта комбинация задач позволит вам объединить данные в существующих таблицах для более удобного анализа.
Макрос для перемещения или копирования данных в Excel
Давайте рассмотрим случай, когда вам нужно скопировать данные из одной рабочей книги, а затем изменить содержимое другой рабочей книги. В этом примере первая книга (исходная книга) имеет 1 2 3 4 5, а вторая книга имеет 6 7 8 9 0 .После запуска макроса рабочая книга 2 должна иметь 6 7 8 9 0 1 2 3 4 5 . Форматы обеих рабочих книг одинаковы.
Вот макрос, который может передавать и добавлять ваши данные. (Убедитесь, что вы прочитали ПРИМЕЧАНИЕ в коде):
Sub CopyData ()Dim sBook_t As String
Dim sBook_s As String
Dim sSheet_t As String
Dim sSheet_s As String
Dim lMaxRows_t As Long
Dim lMaxRows_s As Long
Dim sMaxCol_s As String
Dim sRange_t As String
Dim sRange_s As String
sBook_t = "Целевые данные WB - копировать данные в WB.xls"
sBook_s = "Исходные данные WB - копировать данные в WB.xls"
sSheet_t = "Целевой ББ"
sSheet_s = "Источник"
lMaxRows_t = Workbooks (sBook_t) .Sheets (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row
lMaxRows_s = Workbooks (sBook_s) .Sheets (sSheet_s) .Cells (Rows.Count, "A"). End (xlUp) .Row
sMaxCol_s = Workbooks (sBook_s) .Sheets (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address
sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)
Если (lMaxRows_t = 1), то
sRange_t = "A1:" & sMaxCol_s & lMaxRows_s
sRange_s = "A1:" & sMaxCol_s & lMaxRows_s
Рабочие книги (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Рабочие книги (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
еще
sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)
sRange_s = "A2:" & sMaxCol_s & lMaxRows_s
Рабочие книги (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Рабочие книги (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value
' ###################### НОТА #################
«Следующие строки должны быть использованы с серийным номером, также должны быть исправлены, а не скопированы
'если в этом нет необходимости, то удалите строку ниже
Рабочие книги (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Назначение: = Рабочие книги (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t & ": A" & (lMaxRs - 1)), Тип: = xlFillSeries
End If
End Sub