Macros para transformar todos los excel de una carpeta a pdfs

Ando en busca de una macros en que pueda ingresar una ruta de la carpeta en donde están todos los excel con información y pasar a PDF solo la última hoja activa de cada Excel, y estos se guarden en la misma carpeta en donde están los excel. Los nombre de cada Excel se cuenta como información también.

No no logro dar con dicha hazaña

Respuesta
1

Ya comentaste que todos los archivos están en una sola carpeta, lo que facilita lo que quieres lograr pero, como no lo mencionaste, yo voy a suponer que cada archivo *.pdf creado lleva por nombre una combinación del nombre del archivo/libro que lo contiene y el propio nombre de la hoja (ya si tú deseas otro lo modificas a tu necesidad). Entonces, prueba así:

Sub HojaArchivosaPDF()
Dim Archivos As String, NombreHoja As String, NombreArchivo
Dim UltimaHoja As Integer
Archivos = Dir(ThisWorkbook.Path & "\*.xlsx")
Do While Archivos <> ""
    Workbooks.Open ThisWorkbook.Path & "\" & Archivos
    With ActiveWorkbook
        Let UltimaHoja = .Worksheets.Count
        Let NombreHoja = .Worksheets(UltimaHoja).Name
        Let NombreArchivo = Left(.Name, InStrRev(.Name, ".") - 1)
        .Worksheets(UltimaHoja).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\" & NombreArchivo & NombreHoja & ".pdf", Quality:=xlQualityMinimum, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        .Close SaveChanges:=True
    End With
Archivos = Dir
Loop
End Sub

Salu2

Abraham Valencia

PD: Más que buscar "una macro" que haga lo que en especifico uno necesita, lo que hay que buscar siempre es programar a ncesidad :)

Gracias, quizás soy muy nuevo en VBA pero me arroja un error 1004. A que se debe? 

"Error en el método "open" del objeto "Workbooks"

El archivo desde donde "corres" está macro debe estar (guardado) en la misma carpeta que los archivos que contienen las hojas que vas a convertir en *.pdf. Otra cosa importante, he colocado archivos *.xlsx, quizá tú tienes *.xls o *.xlsm. Verifica.

Abraham Valencia

Solucionado espero jaja, una consulta si se sabe que hoja tiene que ser guardada como PDF se puede escificar, dado que me guarda una hoja en PDF que no es cuál necesito y cuando guardo el Excel la guardo en la hoja que necesito y Guarda otra que no es 

En el ejemplo he puesto que se guarde la última hoja del archivo (la última "pestaña" de la derecha) pero puede ser hoja en la que se abre el archivo o la que tenga un nombre predeterminado, por supuesto.

Sub HojaArchivosaPDF()
Dim Archivos As String, NombreHoja As String, NombreArchivo
Archivos = Dir(ThisWorkbook.Path & "\*.xlsx")
Do While Archivos <> ""
    Workbooks.Open ThisWorkbook.Path & "\" & Archivos
    With ActiveWorkbook
        Let NombreHoja = .ActiveSheet.Name
        Let NombreArchivo = Left(.Name, InStrRev(.Name, ".") - 1)
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\" & NombreArchivo & NombreHoja & ".pdf", Quality:=xlQualityMinimum, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        .Close SaveChanges:=True
    End With
Archivos = Dir
Loop
End Sub

Abraham Valencia

Funciono de maravilla! Muchas gracias.

Una consulta media estúpida ja ja. El tema se puede indicar con el nombre del archivo a convertir en pdf cuantas páginas exporte, porque uso una plantilla de 5 páginas para distintos pedidos y hay algunos de 1,2,3,4,5 hojas, ¿se puede especificar quizás con el ultimo número del archivo excel?

No olvides que en Excel página es una cosa y hoja es otra así que no me queda claro cual es tu nuevo dilema para ser sincero.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas