Makro do przenoszenia lub kopiowania danych między skoroszytami programu Excel

W tym artykule dowiesz się, jak kopiować lub przesyłać dane między arkuszami kalkulacyjnymi w programie Microsoft Excel za pomocą VBA. W tym konkretnym przykładzie nauczymy Cię również, jak łączyć dane za pomocą zapytania dołączanego. Ta kombinacja zadań umożliwi połączenie danych w istniejących arkuszach w celu łatwiejszej analizy.

Makro do przenoszenia lub kopiowania danych w programie Excel

Przyjmijmy przypadek, w którym należy skopiować dane z jednego skoroszytu, a następnie zmienić treść na inny skoroszyt. W tym przykładzie jeden ze skoroszytów (skoroszyt źródłowy) ma 1 2 3 4 5, a skoroszyt dwa ma 6 7 8 9 0 .

Po uruchomieniu makra skoroszyt powinien mieć 6 7 8 9 0 1 2 3 4 5 . Formaty obu skoroszytów są takie same.

Oto makro, które może przesyłać i dołączać twoje dane. (Upewnij się, że przeczytałeś UWAGA w kodzie):

 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 = "Dane docelowe WB- Kopiuj dane do WB.xls"

sBook_s = "Dane źródłowe WB - Kopiowanie danych do WB.xls"

sSheet_t = "Docelowy WB"

sSheet_s = "Source"

lMaxRows_t = Skoroszyty (sBook_t). Arkusze (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row

lMaxRows_s = Skoroszyty (sBook_s). Arkusze (sSheet_s) .Cells (Rows.Count, „A”). End (xlUp) .Row

sMaxCol_s = Skoroszyty (sBook_s). Arkusze (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address

sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)

Jeśli (lMaxRows_t = 1) Następnie

sRange_t = "A1:" & sMaxCol_s & lMaxRows_s

sRange_s = "A1:" & sMaxCol_s & lMaxRows_s

Skoroszyty (sBook_t). Arkusze (sSheet_t) .Range (sRange_t) = Skoroszyty (sBook_s). Arkusze (sSheet_s) .Range (sRange_s) .Value

Jeszcze

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

sRange_s = "A2:" & sMaxCol_s & lMaxRows_s

Skoroszyty (sBook_t). Arkusze (sSheet_t) .Range (sRange_t) = Skoroszyty (sBook_s). Arkusze (sSheet_s) .Range (sRange_s) .Value

' ###################### UWAGA #################

„należy użyć następujących wierszy numeru seryjnego, zamiast go kopiować

„jeśli nie ma takiej potrzeby, usuń poniższy wiersz

Skoroszyty (sBook_t). Arkusze (sSheet_t) .Range („A” i lMaxRows_t) .AutoFill Destination: = Skoroszyty (sBook_t). Arkusze (sSheet_t) .Range („A” & lMaxRows_t & „: A” - 1)), Wpisz: = xlFillSeries

Zakończ jeśli

Napis końcowy

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki