Макрос для перемещения или копирования данных между книгами 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

Предыдущая статья Следующая статья

Лучшие советы