Copiați foaia VBA / copiați foaia într-un alt registru de lucru

Acest tutorial va acoperi cum să copiați o foaie sau o foaie de lucru folosind VBA.

Copiați foaia de lucru în noul registru de lucru

Pentru a copia o foaie de lucru într-un nou registru de lucru:

1 Foi („Sheet1”). Copiați

Copiați ActiveSheet în noul registru de lucru

Pentru a copia foaia activă într-un nou registru de lucru:

1 ActiveSheet.Copy

Copiați mai multe foi în noul registru de lucru

Pentru a copia mai multe foi într-un nou registru de lucru:

1 ActiveWindow.SelectedSheets.Copy

Copiați foaia în același registru de lucru

Am început prin a vă arăta cel mai simplu exemplu de copiere a foilor: copierea foilor (foilor) într-un nou registru de lucru. Aceste exemple de mai jos vă vor arăta cum să copiați o foaie în același registru de lucru. Când copiați o foaie într-un Worbook, trebuie să specificați o locație. Pentru a specifica o locație, îi veți spune VBA să mute foaia de lucru ÎNAINTE sau DUPĂ altă foaie de lucru.

Copiați foaia înainte de altă foaie

Aici vom specifica să copiați și să lipiți Foaia înainte de Foaia2

1 Foi de calcul („Foaie1”). Copiați înainte: = Foi de calcul („Foaie2”)

Copiați foaia înainte de prima foaie

În loc să specificați numele foii, puteți specifica și poziția foii. Aici copiem și lipim o foaie înainte de prima foaie din registrul de lucru.

1 Foi de calcul („Foaie1”). Copiați înainte: = Foi de calcul (1)

Noua foaie creată va fi acum prima foaie din registrul de lucru.

Copiați foaia după ultima foaie

Utilizați proprietatea After pentru a spune VBA să lipească foaia după o altă foaie. Aici vom copia și lipi o foaie după ultima foaie din registrul de lucru:

1 Foi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).

Observați că am folosit Foi de calcul. Numărați pentru a număra numărul de foi din Registrul de lucru.

Mutați foaia

De asemenea, puteți muta o foaie într-un registru de lucru folosind o sintaxă similară. Acest cod va muta Sheet1 la sfârșitul registrului de lucru:

1 Foi de calcul („Foaie1”). Mutați după: = Foi de calcul (Foi de calcul).

Copie și foaie de nume

După copierea și lipirea unei foi, noua foaie creată devine ActiveSheet. Deci, pentru a redenumi noua noastră foaie, pur și simplu utilizați ActiveSheet.

123456 Sub CopySheetRename1 ()Foi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).ActiveSheet.Name = "LastSheet"Sfârșitul Sub

Dacă numele Foaiei există deja, codul de mai sus va genera o eroare. În schimb, putem folosi „On Error Resume Next” pentru a spune VBA să ignore denumirea foii și să continue cu restul procedurii:

12345678 Sub CopySheetRename2 ()Foi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).La eroare Reluați în continuareActiveSheet.Name = "LastSheet"La eroare GoTo 0Sfârșitul Sub

Sau utilizați funcția noastră RangeExists pentru a testa dacă numele foii există deja înainte de a încerca să copiați foaia:

123456789101112131415161718 Sub CopySheetRename3 ()Dacă RangeExists ("LastSheet"), atunciMsgBox „Foaia există deja”.AltfelFoi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).ActiveSheet.Name = "LastSheet"End IfSfârșitul SubFuncția RangeExists (WhatSheet As String, Optional ByVal WhatRange As String = "A1") As BooleanTest dim ca intervalLa eroare Reluați în continuareSet test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0La eroare GoTo 0Funcția de sfârșit

Copiere și foaie de nume pe baza valorii celulei

S-ar putea să doriți să copiați și să denumiți o foaie pe baza unei valori de celulă. Acest cod va denumi foaia de lucru pe baza valorii celulei din A1

12345678 Sub CopySheetRenameFromCell ()Foi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).La eroare Reluați în continuareActiveSheet.Name = Range ("A1"). ValoareLa eroare GoTo 0Sfârșitul Sub

Copiați foaia de lucru într-un alt registru de lucru

Până acum am lucrat cu copierea Foi de calcul într-un registru de lucru. Acum vom acoperi exemple pentru a copia și lipi Foi de calcul în alte registre de lucru. Acest cod va copia o foaie la începutul unui alt registru de lucru:

1 Foi de calcul („Foaie1”). Copiați înainte: = Cărți de lucru („Exemplu.xlsm”). Foi de calcul (1)

Aceasta va copia o foaie de lucru la sfârșitul unui alt registru de lucru.

1 Foi de calcul („Foaie1”). Copiați după: = Cărți de lucru („Exemplu.xlsm”). Foi (Cărți de lucru („Exemplu.xlsm”). Foi de calcul).

Observați că am înlocuit 1 cu Cărți de lucru („Exemplu.xlsm”). Foi de calcul pentru a obține ultima Foaie de lucru.

Copiați foaia de lucru într-un registru de lucru închis

De asemenea, vă recomandăm să copiați o foaie de lucru într-un registru de lucru închis. Acest cod va deschide un registru de lucru închis, astfel încât să puteți copia o foaie în el.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalsSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Foi de calcul („Foaie1”). Copiați înainte: = închisBook.Sheets (1)closedBook.Close SaveChanges: = AdevăratApplication.ScreenUpdating = AdevăratSfârșitul Sub

Copiați foaia dintr-un alt registru de lucru fără a-l deschide

În schimb, acest cod va copia o foaie de lucru dintr-un registru de lucru închis fără a fi nevoie să deschideți manual registrul de lucru.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalsSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copiați înainte: = ThisWorkbook.Sheets (1)închisBook.Close SaveChanges: = FalseApplication.ScreenUpdating = AdevăratSfârșitul Sub

Observați că în ambele exemple am dezactivat ScreenUpdating, astfel încât procesul să ruleze în fundal.

Dublează foaia Excel de mai multe ori

De asemenea, puteți duplica o foaie Excel de mai multe ori utilizând o buclă.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n Ca întregDim i IntegerLa eroare Reluați în continuaren = InputBox („Câte copii doriți să faceți?”)Dacă n> 0 AtunciPentru i = 1 la nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)UrmătorulEnd IfSfârșitul Sub

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave