Makro til at flytte eller kopiere data mellem Excel-workbooks

Denne artikel vil lære dig at kopiere eller overføre data mellem regneark i Microsoft Excel ved hjælp af VBA. I dette særlige eksempel vil vi også lære dig at kombinere data ved hjælp af en tilføjende forespørgsel. Denne kombination af opgaver giver dig mulighed for at kombinere data i eksisterende regneark for lettere analyse.

Makro til at flytte eller kopiere data i Excel

Lad os tage et tilfælde, hvor du skal kopiere data fra en projektmappe og derefter ændre indholdet til en anden projektmappe. I dette eksempel har workbook 1 (kildearbejdsbogen) 1 2 3 4 5 og workbook 2 har 6 7 8 9 0 .

Efter at have kørt makroen, skal workbook 2 have 6 7 8 9 0 1 2 3 4 5 . Formaterne i begge workbooks er de samme.

Her er en makro, der kunne overføre og tilføje dine data. (Sørg for at du læser NOTE i koden):

 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 så længe

Dim lMaxRows_s As Long

Dim sMaxCol_s Som String

Dim sRange_t Som String

Dim sRange_s As String

sBook_t = "Måldata WB- Kopier data til WB.xls"

sBook_s = "Kildedata WB - Kopier data til WB.xls"

sSheet_t = "Mål WB"

sSheet_s = "Source"

lMaxRows_t = Arbejdsbøger (sBook_t) .Sheets (sSheet_t) .Cells (Rows.Count, "A"). Slut (xlUp) .Row

lMaxRows_s = Arbejdsbøger (sBook_s) .Sheets (sSheet_s) .Cells (Rows.Count, "A"). Slut (xlUp) .Row

sMaxCol_s = Arbejdsbøger (sBook_s) .Sheets (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address

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

Hvis (lMaxRows_t = 1) Så

sRange_t = "A1:" & sMaxCol_s & lMaxRows_s

sRange_s = "A1:" & sMaxCol_s & lMaxRows_s

Workbooks (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbejdsbøger (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value

Andet

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

sRange_s = "A2:" & sMaxCol_s & lMaxRows_s

Workbooks (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbejdsbøger (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value

' ###################### BEMÆRK #################

'Følgende linjer skal bruges, hvis serienummeret også skal rettes, i stedet for at blive kopieret

'Hvis det ikke er nødvendigt, skal du slette linjen nedenfor

Arbejdsbøger (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Destination: = Arbejdsbøger (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t & ": A" & (lMaxRows_t + lMaxRows_s - 1)), Type: = xlFillSeries

Afslut Hvis

Slutdel

Forrige Artikel Næste Artikel

Top Tips