Макрос для переміщення або копіювання даних між робочими книгами Excel

Ця стаття навчить вас копіювати або передавати дані між таблицями в Microsoft Excel за допомогою VBA. У цьому конкретному прикладі ми також навчимо вас комбінувати дані за допомогою додавання запиту. Ця комбінація завдань дозволить об'єднати дані в існуючих робочих листах для спрощення аналізу.

Макрос для переміщення або копіювання даних в Excel

Візьмемо випадок, в якому потрібно скопіювати дані з однієї робочої книги, а потім внести зміни до контенту в іншу книгу. У даному прикладі робоча книга 1 (вихідна робоча книга) має 1 2 3 4 5 і робочу книжку 2 має 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

Дим sSheet_s як рядок

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 = "Цільовий WB"

sSheet_s = "Джерело"

lMaxRows_t = Робочі книги (sBook_t). Листи (sSheet_t) .Записи (Rows.Count, "A"). End (xlUp).

lMaxRows_s = Робочі книги (sBook_s). Листи (sSheet_s) .Записи (Rows.Count, "A"). End (xlUp) .Row

sMaxCol_s = Робочі книги (sBook_s). Листи (sSheet_s) .Записи (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). Листи (sSheet_t) .Range (sRange_t) = Робочі книги (sBook_s). Листи (sSheet_s) .Range (sRange_s).

Ще

sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)

sRange_s = "A2:" & sMaxCol_s & lMaxRows_s

Робочі книги (sBook_t). Листи (sSheet_t) .Range (sRange_t) = Робочі книги (sBook_s). Листи (sSheet_s) .Range (sRange_s).

' ###################### ПРИМІТКА #################

'Наступні рядки, які слід використовувати для серійного номера, також повинні бути виправлені, а не копіюватися

'якщо немає потреби, видаліть рядок нижче

Робочі книги (sBook_t). Листи (sSheet_t) .Range ("A" & lMaxRows_t) .Автозаповнення призначення: = книги (sBook_t). Листи (sSheet_t). - 1)), Type: = xlFillSeries

End If

End Sub

Попередня Стаття Наступна Стаття

Кращі Поради