VBA Excel: Importar hojas a un libro de trabajo

Resuelto
Amélie -  
cs_Le Pivert Mensajes publicados 8437 Estado Colaborador -
Bonjour,

Estoy buscando un código fiable que me permita importar las hojas de un libro a otro.
Concretamente, al abrir el libro que contiene la macro y pulsar un botón, me gustaría poder recuperar todas las hojas de un libro a elegir pero que esté en el mismo directorio.
¿Alguien podría hacerlo?

¡Gracias!

2 respuestas

  1. cs_Le Pivert Mensajes publicados 8437 Estado Colaborador 730
     
    Realiza alt f11 para acceder al editor
    Inserta un UserForm
    Coloca un botón con este código

    Opción Explícita Private Sub CommandButton1_Click() Dim i As Integer Dim nom As String Workbooks.Open ThisWorkbook.Path & "\" & "Classeur1.xls" 'libro para copiar a adaptar el nombre 'se recorren todas las hojas For i = 1 To Worksheets.Count Workbooks("Classeur1.xls").Activate 'libro para copiar a adaptar el nombre nom = Worksheets(i).Name Sheets(nom).Select Sheets(nom).Copy after:=Workbooks("Copier_onglet.xls").Sheets(1) 'libro para pegar a adaptar el nombre Next End Sub 


    --
    @+ El Pivert
    9
    1. Amelie
       
      Hola,

      ¡Y gracias por la respuesta! Después de probar el código, puedo afirmar que funciona perfectamente. Las pestañas no llegan en el mismo orden, pero eso no es importante, lo esencial está ahí.

      ¡Gracias de nuevo!
      0
    2. cs_Le Pivert Mensajes publicados 8437 Estado Colaborador 730
       
      Sí, me he dado cuenta y he rectificado.
      He añadido la eliminación de las pestañas por si acaso.
      Habrá que añadir un botón.
      Aquí está el código:

      Option Explicit Private Sub CommandButton1_Click() Dim i As Integer Dim nom As String Workbooks.Open ThisWorkbook.Path & "\" & "Classeur1.xls" 'libro a copiar a adaptar el nombre 'recorremos todas las hojas For i = 1 To Worksheets.Count Workbooks("Classeur1.xls").Activate 'libro a copiar a adaptar el nombre nom = Worksheets(i).Name Sheets(nom).Select Sheets(nom).Copy After:=Workbooks("Copier_onglet.xls").Sheets(1) 'libro a pegar a adaptar el nombre Sheets(nom).Move After:=Sheets(Sheets.Count) 'ponemos las pestañas en orden Next End Sub Private Sub CommandButton2_Click() Sheets("Recapitulatif").Select BorradoTodaHoja End Sub Sub BorradoTodaHoja() Dim Ctr Application.DisplayAlerts = False For Ctr = Sheets.Count To 1 Step -1 If Sheets(Ctr).Name <> ActiveSheet.Name Then Sheets(Ctr).Delete End If Next Application.DisplayAlerts = True End Sub Private Sub UserForm_Initialize() CommandButton1.Caption = "Copiar hojas" CommandButton2.Caption = "Eliminar hojas" End Sub 


      Buen fin de semana
      @+ El Pájaro Carpintero
      0