Tartalomjegyzék
A bemutató makrók gyűjteményét nyújtja az Excelben található lapok másolásához: másolás és átnevezés a cella értéke alapján, több lap másolása, aktív munkalap másolása egy másik fájlba anélkül, hogy megnyitná azt, és így tovább.
A lapok kézi másolása az Excelben elég gyors és egyszerű... ha csak egyszer vagy kétszer végezzük. Több lap többszörös másolása unalmas és időigényes. Ezen az oldalon talál egy maroknyi hasznos makrót, amellyel automatizálhatja ezt a feladatot.
Excel VBA a lap új munkafüzetbe történő másolásához
Ez a legegyszerűbb egysoros makró pontosan azt teszi, amit a neve sugall - az aktív lapot egy új munkafüzetbe másolja.
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubTöbb lap másolása Excelben a VBA-val
Ha több lapot szeretne átmásolni az aktív munkafüzetből egy újba, jelölje ki az összes kívánt munkalapot, és futtassa ezt a makrót:
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel VBA a lap másolásához egy másik munkafüzetbe
Attól függően, hogy hova szeretné beilleszteni a másolt lapot, használja a következő makrók valamelyikét.
Lap másolása egy másik munkafüzet elejére
Ez a makró a célfájlban az aktív lapot másolja az összes többi munkalap elé, Book1 Ha más fájlba szeretne másolni, a "Book1.xlsx" helyébe a célmunkafüzet teljes nevét írja be.
Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End SubLap másolása egy másik munkafüzet végére
Ez a kódrészlet megduplázza az aktív munkalapot, és a másolatot a Book1 Kérjük, ne feledje, hogy a "Book1.xlsx" helyett a célmunkafüzet nevét adja meg.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End SubMegjegyzés: Ahhoz, hogy a makrók működjenek, a célmunkafüzetnek a merevlemezen vagy a hálózaton kell lennie.
Lap másolása egy kiválasztott munkafüzetbe
Ahhoz, hogy az aktuális lapot bármelyik megnyitott munkafüzetbe átmásolhassa, létrehozhat egy UserForm (nevén UserForm1 ) egy ListBox ellenőrzés ( ListBox1 névvel ) és két gombot:
Ezután kattintson duplán az űrlapra, és illessze be az alábbi kódot a Kód ablakba:
Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndSubHa a UserForm már a helyén van, az alábbi makrók egyikével másolhatja az aktív lapot az Ön által kiválasztott munkafüzetbe.
Lap másolása a a kiválasztott munkafüzet eleje :
Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End SubLap másolása a a kiválasztott munkafüzet vége :
Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End SubAz Excelben futtatva a makró megjeleníti az összes jelenleg megnyitott munkafüzet listáját. Kiválasztja a szükségeset, és az OK gombra kattint:
Excel makró a lap másolásához és átnevezéséhez
Amikor egy lapot másol az Excelben, a másolat az alapértelmezett formátumban kap egy nevet, például a következő formában Sheet1 (2) A következő makrókkal megkímélhetjük Önt az alapértelmezett név manuális megváltoztatásától.
Ez a kód megkettőzi az aktív munkalapot, a másolatot "Tesztlap" névvel nevezi el (ezt a nevet tetszés szerint bármilyen mással helyettesítheti), és a másolt lapot az aktuális munkafüzet végére helyezi.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End SubA felhasználó számára lehetővé teszi, hogy a másolt lap nevének megadása , használja ezt a kódot:
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copyed worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubA makró futtatásakor megjelenik a következő beviteli mező, amelybe beírhatja a kívánt nevet, majd megnyomhatja az OK gombot:
Excel makró a lap másolásához és átnevezéséhez a cella értéke alapján
Bizonyos helyzetekben kényelmesebb lehet, ha egy másolatot egy adott cellaértékkel nevezünk el, például egy oszlopfejlécet. Ehhez egyszerűen fogjuk a fenti kódot, és megadjuk a az aktuálisan kiválasztott cella Az előző példához hasonlóan a másolat az aktív munkafüzet végére kerül.
A legtrükkösebb rész az lenne, hogy a felhasználók mindig a megfelelő cellát válasszák ki a makró futtatása előtt :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copyed worksheet" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub End SubAlternatívaként a cella címének keménykódolása amellyel a másolatot el kell nevezni, az alábbi kódban az A1 cella. Ha a másolt munkalapot egy másik cella alapján szeretné elnevezni, akkor az A1-et helyettesítse a megfelelő cellahivatkozással.
Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End SubMakró a munkalap zárt munkafüzetbe történő másolásához
Ez a makró az aktív lapot egy lezárt munkafüzet végére másolja. A másik munkafüzet neve nincs megadva a kódban - a makró megnyitja a Windows szabványos Intéző ablakát, és lehetővé teszi, hogy tetszőleges célfájlt válasszon:
Miután kiválasztotta a fájlt, és rákattintott a Nyissa meg a címet. , a makró automatikusan lemásolja az aktív lapot, és bezárja a célmunkafüzetet.
Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub End SubExcel VBA a lap másolására egy másik munkafüzetből megnyitás nélkül
Ez a makró lehetővé teszi egy munkalap másolását egy másik Excel-fájlból anélkül, hogy azt megnyitná. A másolt lap az aktuális munkafüzet végére kerül beillesztésre.
Csak ne feledje, hogy a kódban néhány cserét kell végrehajtani:
- A C:\Users\XXX\Documents\Target_Book.xlsx állományt meg kell változtatni annak a munkafüzetnek a tényleges elérési útvonalára és nevére, amelyből a lapot másolni szeretné.
- A Sheet1 helyébe a másolni kívánt lap nevét kell írni.
Excel VBA a lap többszörös duplikálásához
Néha előfordulhat, hogy ugyanazt a lapot többször is meg kell duplikálnia, például azért, hogy különböző képleteket teszteljen ugyanazon az adatkészleten. Ez könnyen elvégezhető a következő makróval.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Hány példányt szeretne készíteni az aktív lapról?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubNyissa meg az eredeti lapot, futtassa a makrót, adja meg, hogy hány példányt szeretne készíteni az aktív lapról, és kattintson a OK :
Hogyan duplikálhat lapokat az Excelben a VBA-val
Ha a fenti makrók valamelyikével szeretne egy lapot másolni az Excelben, akkor vagy beillesztheti a VBA-kódot a saját könyvébe, vagy futtathat egy makrót a mintamunkafüzetünkből.
Makró hozzáadása a munkafüzethez
A kódnak a munkafüzetbe való beillesztéséhez hajtsa végre a következő lépéseket:
- Nyissa meg a másolni kívánt munkalapot.
- Nyomja meg az Alt + F11 billentyűkombinációt a Visual Basic szerkesztő megnyitásához.
- A bal oldali ablaktáblán kattintson a jobb gombbal a ThisWorkbook , majd kattintson a Beillesztés > Modul .
- Illessze be a kódot a Kód ablakba.
- Nyomja meg az F5 billentyűt a makró futtatásához.
A részletes, lépésről-lépésre történő utasításokat lásd: Hogyan illesszünk be VBA-kódot az Excelbe.
Makró futtatása a mintamunkafüzetünkből
Alternatívaként letöltheti az Excel-lapok duplikálása című mintamunkafüzetünket, és onnan futtathatja a kódot.
A minta munkafüzet a következő makrókat tartalmazza:
CopySheetToNewWorkbook - az aktuális munkalapot egy új munkafüzetbe másolja.
CopySelectedSheets - több kijelölt lapot másol egy új munkafüzetbe.
CopySheetToBeginningAnotherWorkbook - az aktív lapot egy másik munkafüzet elejére másolja.
CopySheetToEndAnotherWorkbook - az aktív lapot egy másik Excel-fájl végére másolja.
CopySheetAndRename - megkettőzi az aktuális lapot, átnevezi a felhasználó által megadott módon, és a másolatot az aktuális munkafüzet összes többi lapja után helyezi el.
CopySheetAndRenamePredefined - megkettőzi az aktív lapot, a másolatnak egy bekódolt nevet ad, és az aktuális munkafüzet végére helyezi.
CopySheetAndRenameByCell - másolatot készít az aktív lapról, és a kiválasztott cella értéke alapján átnevezi azt.
CopySheetAndRenameByCell2 (Lap másolása és átnevezése cellánként2) - lemásolja az aktív lapot, és átnevezi a keményen kódolt cellacím alapján.
CopySheetToClosedWorkbook - lehetővé teszi a lap másolását egy lezárt munkafüzetbe.
CopySheetFromClosedWorkbook - lehetővé teszi egy lap másolását egy másik Excel-fájlból anélkül, hogy azt megnyitná.
DuplicateSheetMultipleTimes - lehetővé teszi egy lap többszörös duplikálását az Excelben.
A makró futtatásához az Excelben csak a következőket kell tennie:
- Nyissa meg a letöltött munkafüzetet, és engedélyezze a tartalmat, ha kéri.
- Nyissa meg a saját munkafüzetét, és navigáljon a másolni kívánt lapra.
- A munkalapon nyomja meg az Alt + F8 billentyűkombinációt, jelölje ki a kívánt makrót, és kattintson a Fuss .
Így duplikálhat egy lapot az Excelben a VBA segítségével. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogon!