Como duplicar unha folla en Excel con VBA

  • Comparte Isto
Michael Brown

O titorial ofrece unha colección de macros para duplicar follas en Excel: copiar e renomear segundo o valor da cela, copiar varias follas, copiar unha folla de traballo activa noutro ficheiro sen abrila e moito máis.

Copiar manualmente follas en Excel é bastante rápido e sinxelo... se se realiza só unha ou dúas veces. Duplicar varias follas varias veces é aburrido e leva moito tempo. Nesta páxina, atoparás un puñado de macros útiles para automatizar esta tarefa.

    Excel VBA para copiar a folla nun novo libro

    Esta macro dunha liña máis sinxela faino exactamente o que suxire o seu nome: copia a folla activa nun novo libro.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Copia varias follas en Excel con VBA

    Se queres copie varias follas do libro activo a un novo, seleccione todas as follas de traballo de interese e execute esta macro:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA para copiar a folla noutro libro

    Según onde queira inserir a folla copiada, use unha das seguintes macros.

    Copiar folla ao comezo doutro libro

    Esta macro copia a folla activa antes todas as outras follas de traballo do ficheiro de destino, Libro1 neste exemplo. Para copiar noutro ficheiro, substitúe "Book1.xlsx" polo nome completo do seu libro de traballo de destino.

    Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ). Sheets(1) End Sub

    Copiar a folla ao final doutro libro

    Este fragmento de código duplica a folla de traballo activa e coloca a copia ao final do Libro1 . De novo, recorda substituír "Book1.xlsx" polo nome do teu libro de destino.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx") " ).Follas de traballo.Reconto) End Sub

    Nota. Para que funcionen as macros, o libro de traballo de destino debe estar gardado no disco duro ou na rede.

    Copie a folla nun libro de traballo seleccionado

    Para poder copiar a folla actual en calquera libro aberto, pode crear un formulario de usuario (chamado UserForm1 ) cun control ListBox ( denominado ListBox1 ) e dous botóns:

    A continuación, fai dobre clic no formulario e pega o seguinte código na xanela Código:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Extremo seguinte Sub Privado Sub CommandButton1_Click() If ListBox1.ListIndex > -1 Entón SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Co UserForm no seu lugar, pode usar un dos seguintes macros para copiarfolla activa ao libro de traballo que elixa.

    Copie a folla ao inicio do libro de traballo seleccionado :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Entón activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Copiar a folla ao final do libro seleccionado :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks.SelectedWorkbook.SelectedWorkbook1.SelectedWorkbook)UserForm1. End Sub

    Cando se executa en Excel, a macro amosarache unha lista de todos os libros de traballo abertos actualmente. Selecciona o necesario e fai clic en Aceptar:

    Macro de Excel para copiar a folla e renomear

    Cando copias unha folla en Excel, a réplica recibe un nome no formato predeterminado como Folla1 (2) . As seguintes macros poden evitarche a molestia de cambiar o nome predeterminado manualmente.

    Este código duplica a folla de traballo activa, nomea a copia como "Folla de proba" (podes substituíla por calquera outro nome que queiras) , e coloca a folla copiada ao final do libro de traballo actual.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On error Continue Next activeSheet.Name ="Test Sheet" End Sub

    Para permitir que o usuario especifique o nome da folla copiada , use este código:

    Public Sub CopySheetAndRename() Dim newName As String On error Continue Next newName = InputBox( "Introduza o nome da folla de traballo copiada" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) En caso de erro Continuar Seguinte activeSheet.Name = newName End If End Sub

    Ao executar, a macro mostra a seguinte caixa de entrada, na que escribe o nome desexado e preme Aceptar:

    Macro de Excel para copiar a folla e renomear en función do valor da cela

    En nalgunhas situacións, pode ser máis conveniente nomear unha copia cun valor de cela específico, por exemplo, un encabezado de columna. Para iso, simplemente toma o código anterior e proporciona o valor da celda seleccionada actualmente automaticamente á caixa de entrada. Do mesmo xeito que no exemplo anterior, a copia colocarase ao final do libro de traballo activo.

    O máis complicado sería que os seus usuarios seleccionen sempre a cela correcta antes de executar a macro :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Continue Next newName = InputBox( "Introduza o nome da folla de traballo copiada", "Copiar folla de traballo", ActiveCell.Value) Se newName "" Entón activeSheet. Copy After:=Follas de traballo (Follas.Contador) En caso de erro Reanudar Seguinte activeSheet.Name = newName End If End Sub

    Como alternativa, pode codificar o enderezo dea cela pola que se debe nomear a copia, a cela A1 no código de abaixo. Para nomear a folla de traballo copiada en base a outra cela, substitúe A1 por unha referencia de cela adecuada.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range ( "A1" ).Valor "" Entón en caso de erro Reanudar Seguinte activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Macro para copiar a folla de traballo nun libro pechado

    Esta macro copia a folla activa ao final dun libro de traballo pechado. O nome doutro libro non se especifica no código; a macro abrirá a xanela estándar do Explorador de Windows e permitirá escoller calquera ficheiro de destino:

    Despois de seleccionar o ficheiro e prema Abrir , a macro copiará a folla activa e pechará o libro de traballo de destino automaticamente.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Ficheiros (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Cadernos de traballo. Abrir (nome do ficheiro) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA para copiar a folla doutro libro senapertura

    Esta macro permítelle copiar unha folla de traballo doutro ficheiro de Excel sen abrila. A folla copiada inserirase ao final do caderno de traballo actual.

    Lembre só facer un par de substitucións no código:

    • C:\Users\XXX\Documents\ Target_Book.xlsx debe cambiarse polo camiño real e polo nome do libro de traballo do que quere copiar unha folla.
    • Sheet1 debe substituírse polo nome da folla que quere copiar.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Establecer sourceBook = Workbooks. Abre ( "C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Pechar Application.ScreenUpdating = True End Sub

    Excel VBA para duplicar a folla varias veces

    Ás veces, pode ter que duplicar a mesma folla máis dunha vez, por exemplo para probar fórmulas diferentes no mesmo conxunto de datos. Isto pódese facer facilmente coa seguinte macro.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Continue Next n = InputBox( "¿Cantas copias da folla activa quere facer?" ) Se n > = 1 Entón For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End Se End Sub

    Abre a folla orixinal, executa a macro, especifique cantas copias da folla activaque quere facer e prema Aceptar :

    Como duplicar follas en Excel con VBA

    Para copiar unha folla en Excel cunha das macros anteriores, pode inserir o código VBA no seu propio libro ou executar unha macro do noso libro de exemplo.

    Como engadir unha macro ao seu libro de traballo

    Para inserir o código no seu libro de traballo, siga estes pasos:

    1. Abra a folla de traballo que quere copiar.
    2. Preme Alt + F11 para abrir o Editor de Visual Basic.
    3. Activado no panel esquerdo, prema co botón dereito do rato en ThisWorkbook e, a continuación, prema en Inserir > Módulo .
    4. Pega o código na xanela Código.
    5. Preme F5 para executar a macro.

    Para obter instrucións detalladas paso a paso, consulta Como inserir código VBA en Excel.

    Como executar unha macro do noso caderno de traballo de exemplo

    Como alternativa, pode descargar o noso caderno de traballo de mostra para duplicar follas de Excel e executar o código desde alí.

    O libro de traballo de mostra contén as seguintes macros:

    CopySheetToNewWorkbook - copia o cu alugue a folla de traballo a un novo libro.

    CopySelectedSheets : copia varias follas que seleccione nun novo libro.

    CopySheetToBeginningAnotherWorkbook : copia a folla activa ao comezo doutro libro de traballo.

    CopySheetToEndAnotherWorkbook : copia a folla activa ao final doutro ficheiro de Excel.

    CopySheetAndRename : duplica a actual folla,renomméao segundo o especificado polo usuario e pon a copia despois de todas as outras follas do libro de traballo actual.

    CopySheetAndRenamePredefined : duplica a folla activa, dálle un nome codificado á copia e colócaa. ao final do libro de traballo actual.

    CopySheetAndRenameByCell : fai unha copia da folla activa e cámbiaa o nome segundo o valor da cela seleccionada.

    CopySheetAndRenameByCell2 : copia a folla activa e cámbiaa o nome segundo o enderezo da cela codificado.

    CopySheetToClosedWorkbook : permítelle copiar a folla nun libro pechado.

    CopySheetFromClosedWorkbook : permítelle copiar unha folla doutro ficheiro de Excel sen abrila.

    DuplicateSheetMultipleTimes : permítelle duplicar unha folla en Excel varias veces.

    Para executa a macro no teu Excel, só tes que facer o seguinte:

    1. Abre o libro de traballo descargado e activa o contido se se lle solicita.
    2. Abre o teu propio libro de traballo e navega ata a folla que queres copia.
    3. <1 7>Na túa folla de traballo, preme Alt + F8 , selecciona a macro de interese e fai clic en Executar .

    Así podes duplicar unha folla en Excel con VBA. Grazas por ler e espero verte no noso blog a vindeira semana!

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.