es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando combinar múltiples informes en uno solo.

Hola, he intentado fusionar múltiples informes en uno sin éxito. Primero, configuré el código para permitir que el usuario ingrese la ruta donde se encuentra la carpeta que contiene los informes y luego coloqué el código para abrirlos todos y copiarlos y pegarlos en uno nuevo, pero sin éxito. VBA no puede reconocer la segunda parte y abrir los archivos.

Sub archivos()
Dim folderpath As String
Dim FileOpen As String
Dim DialogBox As FileDialog
Dim wbk As Workbook
Dim wbk1 As Workbook
Set wbk1 = ThisWorkbook
Dim Filename As String

folderpath = InputBox("Por favor, introduce la ruta donde se encuentran los archivos", "Seleccionar Ruta de Archivos", "Pegar aquí la ruta")
FileOpen = Dir(folderpath & "\*.xls*")
Do While Len(Filename) > 0
Set wbk = Workbooks.Open(FileOpen)
wbk.Activate

Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Windows("Libro1").Activate
Application.DisplayAlerts = False
Dim lr As Double
lr = wbk1.Sheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Hoja1").Select
Cells(lr + 1, 1).Select
ActiveSheet.Paste
wbk.Close True
Filename = Dir
Loop

End Sub
Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se encuentra en la variable FileOpen. El código no asigna correctamente los nombres de archivo a la variable, por lo tanto, VBA no puede reconocer la segunda parte del código para abrir los archivos.

    Una posible solución sería reemplazar la línea actual:

    FileOpen = Dir(folderpath & “*.xls*”)

    con:

    Filename = Dir(folderpath & “*.xls*”)
    Do While Len(Filename) > 0
    FileOpen = folderpath & “\” & Filename

    Esto debería asignar la ruta de archivo correcta a FileOpen y permitir que el resto del código funcione correctamente.

Comments are closed.