Visual Basic para Aplicaciones - Unificar libros

Life is soft - evento anual de software empresarial
 
Vista:

Unificar libros

Publicado por xchelivan (1 intervención) el 08/02/2018 00:18:03
Buenas tardes:

Requiero de su apoyo para validar la siguiente Macro, requiero unificar varios libros en uno solo, haciendo una distinción con alguna columna que lleve el nombre de hoja de los diferentes libros o algo similar, al correr la macro me arroja este error "Se ha producido el error 1004 en tiempo de ejecución"

El caso es el siguiente

En una carpeta se localizaran los libros de Excel a unificar , estos contienen nombre extenso por lo que necesito que inicialmente se eliminen ciertos caracteres que siempre siguen el mismo patron de numero de carecteres, solo se modifica la fecha y la hora dependiendo de cuando se obtenga el reporte.

Ej. "gc_PT4027-53OM04E1801_fullgc_2018-02-07-09-57-42" cambiar nombre a "PT4027-53OM04E1801"

Posteriormente dentro de cada libro crear una columna o alguna seña que registre la distinción de la hoja en el archivo unificado.

* todos los libros cuentan con la misma cantidad de columnas y orden

*contienen filas de numeros

Espero su amable apoyo.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub UnirLibros()
Dim Directorio, NombreLibro As String
Dim ContadorFicheros As String
Dim Unidos As Workbook
Dim K, NumHojas As Integer
Dim Libro As Workbook
 
Directorio = ThisWorkbook.Path
ContadorFicheros = Dir$(Directorio + "\*.*")
 
'Crea el libro que contendrá a todos los demás
Application.SheetsInNewWorkbook = 1
Set Unidos = Application.Workbooks.Add
 
Do While ContadorFicheros <> "" And UCase(ContadorFicheros) <> "UNIR.XLSM"
    Workbooks.Open Filename:=Directorio & "\" & ContadorFicheros
    Set Libro = Workbooks(ContadorFicheros)
    NumHojas = Libro.Worksheets.Count
    For K = 1 To NumHojas
        Libro.Worksheets(K).Copy after:=Unidos.Worksheets(Unidos.Worksheets.Count)
        NombreLibro = Replace(Libro.Name, ".xlsx", "")
        Unidos.Worksheets(Unidos.Worksheets.Count).Name = NombreLibro & "_" & Libro.Worksheets(K).Name
    Next K
    Workbooks(ContadorFicheros).Close
    ContadorFicheros = Dir$
Loop
Unidos.Worksheets(2).Select
With Unidos
    .SaveAs Filename:=Directorio & "\" & "unidos.xlsx"
    .Close
End With
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Unificar libros

Publicado por Antoni Masana (498 intervenciones) el 08/02/2018 13:31:04
No entiendo que es lo que quieres hacer.

Por un lado entiendo que cuando dices unificar te refieres copiar el contenido de varios libros en uno solo.

Lo de " estos contienen nombre extenso" no entiendo donde esta este nombre .¿El libro? ¿Las hojas? ¿En las celdas?

Y por último ¿Cual es la consulta?

Sería conveniente que adjuntes los libros y comentases que es lo que no funciona o que problema tienes.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar