Hogyan duplikálhat egy lapot az Excelben a VBA-val

  • Ossza Meg Ezt
Michael Brown

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 Sub

    Tö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 Sub

    Excel 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 Sub

    Lap 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 Sub

    Megjegyzé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 EndSub

    Ha 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 Sub

    Lap 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 Sub

    Az 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 Sub

    A 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 Sub

    A 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 Sub

    Alternatí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 Sub

    Makró 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 Sub

    Excel 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.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    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 Sub

    Nyissa 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:

    1. Nyissa meg a másolni kívánt munkalapot.
    2. Nyomja meg az Alt + F11 billentyűkombinációt a Visual Basic szerkesztő megnyitásához.
    3. A bal oldali ablaktáblán kattintson a jobb gombbal a ThisWorkbook , majd kattintson a Beillesztés > Modul .
    4. Illessze be a kódot a Kód ablakba.
    5. 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:

    1. Nyissa meg a letöltött munkafüzetet, és engedélyezze a tartalmat, ha kéri.
    2. Nyissa meg a saját munkafüzetét, és navigáljon a másolni kívánt lapra.
    3. 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!

    Michael Brown elkötelezett technológiai rajongó, aki szenvedélyesen egyszerűsíti a bonyolult folyamatokat szoftvereszközök segítségével. A technológiai iparban szerzett több mint egy évtizedes tapasztalatával a Microsoft Excel és az Outlook, valamint a Google Táblázatok és a Dokumentumok területén fejlesztette tudását. Michael blogja célja, hogy megossza tudását és szakértelmét másokkal, könnyen követhető tippeket és oktatóanyagokat adva a termelékenység és a hatékonyság javításához. Akár tapasztalt szakember, akár kezdő, Michael blogja értékes betekintést és gyakorlati tanácsokat kínál, amelyek segítségével a legtöbbet hozhatja ki ezekből az alapvető szoftvereszközökből.