Visual Basic para Aplicaciones - pasar hojas de excel a pdf

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Diego
Val: 3
Ha aumentado su posición en 20 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

pasar hojas de excel a pdf

Publicado por Diego (1 intervención) el 06/02/2021 13:08:45
Buenas!
Necesito su consejo porque me encuentro con problemas en dos formulas. La primera se rompe cuando termina el bucle. La segunda que debería pasar las hojas a pdf directamente no corre, y ahi no encuentro el motivo. Intenté modificar la fórmula pero me encuentro con el mismo error.

Adjunto el archivo y desde ya, agradezco cualquier sugerencia.

Saludos

D.
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 Norberto
Val: 115
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

pasar hojas de excel a pdf

Publicado por Norberto (34 intervenciones) el 08/03/2021 13:14:11
Hola:

Lo primero. Debes de tener la instrucción Option Explicit al principio del módulo y definir todas las variables que vayas a utilizar para evitar el pirmero de los problemas que es que están usando "Puesto" y "Puestos" para la misma variable, por eso no paraba el bucle y se producía un error. Si las variables tienen que estar definidas te evitas ese problema puesto que te avisará si usas una que no lo está.

1
2
3
4
5
6
7
8
9
10
11
Option Explicit
 
Sub CargarDescripciones()
    Dim i As Integer, Puesto As String
    'busco el rango de filas con datos
    i = 5
    Puesto = Sheets("Base_de_datos").Cells(i, 19).Value
    While (Puesto <> "")
        Puesto = Sheets("Base_de_datos").Cells(i, 19).Value
        Call eliminarHojaSiExiste(Puesto)
...

En cuanto al segundo problema, has puesto una condición para que no se exporten "Base_de_datos" ni "Template" pero te has olvidado de que hay varias hojas ocultas que tampoco tendrían que exportarse.

1
2
3
4
5
6
7
8
Sub exportarTodosAPdf()
    Dim Hoja As Worksheet, i As Integer, Ruta As String
    i = 1
    Ruta = "C:\PDF_COMUNICACION_INTERNA\"
    If Dir(Ruta, vbDirectory) = "" Then MkDir (Ruta)
    For Each Hoja In Worksheets
        If (Hoja.Name <> "Base_de_datos" And Hoja.Name <> "Template" And Hoja.Visible = xlSheetVisible) Then
...

También hacían falta un par de correcciones para que el PDF se generara bien:
Añadir Hoja.PageSetup.Zoom = False para que tenga en cuenta el ajuste a 1 x 1 páginas
y cambiar el rango a exportar por Hoja.Range("A3:L70").ExportAsFixedFormat

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar