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