Deseo unir varias hojas de Excel que tienen el mismo nombre, las hojas provienen de varios libros

Tengo la macro que se encarga de abrir varios archivos que yo escojo, pero solo ubica la hoja por nombre "contador", quiero que el nombre de la hoja que deseo abrir lo pueda manejar desde la casilla B3 en la hoja1

Sub Open_Files()
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = True
    Application.StatusBar = "Iniciando..."

      'Definir la variable como tipo Variante
       Dim X As Variant
       'Abrir cuadro de dialogo
       X = Application.GetOpenFilename _
           ("Excel Files (*.xlsb), *.xlsb", 2, "Abrir archivos", , True)
        'Validar si se seleccionaron archivos
        If IsArray(X) Then ' Si se seleccionan
          'Crea Libro nuevo
           WORKBOOKS.Add
          'Captura nombre de archivo destino donde se grabaran los archivos seleccionados
           A = ActiveWorkbook.Name
        '*/********************
       For y = LBound(X) To UBound(X)
       Application.StatusBar = "Importando Archivos: " & X(y)
         WORKBOOKS.Open X(y)
              b = ActiveWorkbook.Name
           Sheets("Contador").Copy after:=WORKBOOKS(A).Sheets(WORKBOOKS(A).Sheets.Count)
           Next
           WORKBOOKS(b).Close False
           Call Unir_Hojas
    End If
    Application.ScreenUpdating = True
    Application.StatusBar = "Ejecución terminada."
   End Sub

1 Respuesta

Respuesta
1

Al iniciar tu macro debieras guardar el nombre de la hoja en una variable. Entiendo que estará en B3 del libro desde donde se está ejecutando la macro, entonces sería:

nbreHoja = Sheets("Hoja1"). Range("B3").value

Y luego en la línea donde se menciona "Contador" sería:

 Sheets(nbreHoja).Copy after:=WORKBOOKS(A). Sheets(WORKBOOKS(A). Sheets. Count)

Observa que aquí ya el nombre no lleva comillas.

Si esto resuelve tu consulta no olvides valorarla y finalizar.

Gracias Elsa, sin embargo la macro presenta error en la sintaxis y no la he podido corregir

Indicame en qué línea te marca el error ... yo solo toqué 1 línea reemplazando 1 palabra... no me hagas cargo del resto, jejeje.

Escribime cómo te quedó el código completo con el cambio e indicame en qué línea te marca error de sintaxis,.

Sdos!

¿Qué pasó? ¿La finalizaste o vas a aclararme dónde está el problema?

Sub Open_Files()
    Application.ScreenUpdating = False
    Application.DisplayStatusBar = True
    Application.StatusBar = "Iniciando..."

      'Definir la variable como tipo Variante
       Dim X As Variant
       Dim nbreHoja As Variant
       'Abrir cuadro de dialogo
       X = Application.GetOpenFilename _
           ("Excel Files (*.xlsb), *.xlsb", 2, "Abrir archivos", , True)
       nbreHoja = Sheets("Hoja1").Range("B3").Value
            'Validar si se seleccionaron archivos
        If IsArray(X) Then ' Si se seleccionan
          'Crea Libro nuevo
           WORKBOOKS.Add
          'Captura nombre de archivo destino donde se grabaran los archivos seleccionados
           A = ActiveWorkbook.Name
        '*/********************
       For y = LBound(X) To UBound(X)
       Application.StatusBar = "Importando Archivos: " & X(y)
         WORKBOOKS.Open X(y)
              b = ActiveWorkbook.Name
           Sheets(nbreHoja).Copy after:=WORKBOOKS(A).Sheets(WORKBOOKS(A).Sheets.Count.
           Next
           WORKBOOKS(b).Close False
           Call Unir_Hojas
    End If
    Application.ScreenUpdating = True
    Application.StatusBar = "Ejecución terminada."
   End Sub

El error de sintaxis se encuentra en la línea que empieza por Sheets(nbreHoja).

Saludos

No debes hacer salto de renglón en la línea ni agregar el pto final ... copiala tal cual aparece en los cuadros.

Sheets(nbreHoja).Copy after:=WORKBOOKS(A). Sheets(WORKBOOKS(A). Sheets. Count

Eso con respecto a la sintaxis.

Ahora la línea donde defines la variable 'nbreHoja' debiera estar antes de abrir los libros si vas a tomar el contenido de la celda del 'libro activo', en este orden:

 nbreHoja = Sheets("Hoja1").Range("B3").Value
'Abrir cuadro de dialogo
       X = Application.GetOpenFilename _
           ("Excel Files (*.xlsb), *.xlsb", 2, "Abrir archivos",, True)

Y si vas a tomar el contenido de los libros que vas abriendo, debes verificar que el libro tenga hojas llamadas 'Hoja1' y en todos los casos verificar que realmente la celda tenga algún contenido válido.

No puedo explayarme más considerando que ya finalizaste la consulta...

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas