Excel - Convertir hojas de excel a PDF

 
Vista:
Imágen de perfil de Diego
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Diego (7 intervenciones) el 06/02/2021 17:27:12
Buenas!
Necesito su colaboración porque tengo 2 macros sin cerrar y no encuentro el error. El primero genera las hojas de excel pero finaliza en un error. El segundo directamente no corre (debería convertir las hojas a PDF y guardarlas en una carpeta).

Espero puedan brindarme ayuda en cómo resolver ambos casos.

Comparto el archivo por si es de utilidad.

Muchas Gracias!!!
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: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Antoni Masana (2477 intervenciones) el 07/02/2021 14:55:06
No especificas que macro falla y veo tres macros.
Supongo que es la CargaDescripciones()

Veo la macro y el primer fallo es borrar la primera línea que Excel te propone para crear las macros. Option Explicit.
El segundo fallo es no definir las variables.

Extracto del codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub CargarDescripciones()
    'busco el rango de filas con datos
    i = 5
    puestos = Sheets("Base_de_datos").Cells(i, 19).Value
    While (puestos <> "")
        puesto = Sheets("Base_de_datos").Cells(i, 19).Value
        Call eliminarHojaSiExiste(puesto)
        'creo la hoja
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = puesto
        'copio el template
        Sheets("Template").Range("1:70").Copy Destination:=Sheets(puesto).Range("1:70")
        ...
        'sigo con el bucle
        i = i + 1
        puesto = Sheets("Base_de_datos").Cells(i, 1).Value
    Wend
    Sheets("Base_de_datos").Activate
    MsgBox "Generación de hojas finalizada!"
End Sub

De haber definido la variable verías que tienes 2: puesto y puestos y además sobra una línea de código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub CargarDescripciones()
    Dim 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)
        'creo la hoja
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = puesto
        'copio el template
        Sheets("Template").Range("1:70").Copy Destination:=Sheets(puesto).Range("1:70")
        ...
        'sigo con el bucle
        i = i + 1
        puesto = Sheets("Base_de_datos").Cells(i, 1).Value
    Wend
    Sheets("Base_de_datos").Activate
    MsgBox "Generación de hojas finalizada!"
End Sub

Saludos.
\\//_
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
Imágen de perfil de Diego
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Diego (7 intervenciones) el 07/02/2021 20:21:27
Excelente por la ayuda! Pude corregir la macro (que era 1 de las 2 que falla).

La otra es ExportarTodosAPdf(), que tiene la finalidad de pasar a PDF todas las hojas generadas por esta. En este caso no logro que corra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub exportarTodosAPdf()
    Dim Hoja As Worksheet
    i = 1
    Ruta = "C:\PDF_DESCRIPCION_DE_PUESTOS\"
    If Dir(Ruta, vbDirectory) = "" Then MkDir (Ruta)
    For Each Hoja In Worksheets
        If (Hoja.Name <> "Base_de_datos" And Hoja.Name <> "Template") Then
            Hoja.PageSetup.FitToPagesWide = 1
            Hoja.PageSetup.FitToPagesTall = 1
            Hoja.PageSetup.Orientation = xlLandscape
            Hoja.Range("A3:A70").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta + Hoja.Name + ".pdf", OpenAfterPublish:=False, IgnorePrintAreas:=False
        End If
        i = i + 1
    Next Hoja
    MsgBox "Generación de PDFs finalizado!" & vbNewLine & "Los archivos se guardaron en c:\PDF_DESCRIPCION_DE_PUESTOS"
End Sub

Gracias por la ayuda

Saludos

Diego
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Antoni Masana (2477 intervenciones) el 07/02/2021 22:21:15
Veo varios fallos en la macro.

A parte de las dos hoja que ignoras hay otras que están dando error, por otro lado esta el echo de que seleccionas a columna A desde la fila 2 a la 7 y esta vacía.

Como las hojas que quieres imprimir son las mismas, supongo, que has gestionado en la macro anterior prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Exportar_Todos_A_PDF()
    Dim Nombre As String, i as Long
    i = 5
    Ruta = "C:\PDF_COMUNICACION_INTERNA\"
    If Dir(Ruta, vbDirectory) = "" Then MkDir (Ruta)
 
    While Sheets("Base_de_Datos").Cells(i, "S") <> ""
        Nombre = Sheets("Base_de_Datos").Cells(i, "S")
        Sheets(Nombre).Select
 
        ActiveSheet.PageSetup.FitToPagesWide = 1
        ActiveSheet.PageSetup.FitToPagesTall = 1
        ActiveSheet.PageSetup.Orientation = xlLandscape
        ActiveSheet.Range("B4:L70").ExportAsFixedFormat _
                                 Type:=xlTypePDF, _
                                 Filename:=Ruta + Nombre + ".pdf", _
                                 OpenAfterPublish:=False, _
                                 IgnorePrintAreas:=False
        i = i + 1
    Wend
    MsgBox "Generación de PDFs finalizado!" & vbNewLine & _
           "Los archivos se guardaron en c:\PDF_COMUNICACION_INTERNA"
End Sub

Seguramente no este impreso como deseas pero ese ya es un problema de diseño.

Saludos.
\\//_
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
Imágen de perfil de Diego
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Diego (7 intervenciones) el 07/02/2021 22:54:31
Gracias nuevamente!

Entiendo que tengo un punto a corregir en el diseño. De igual manera la macro "Exportar_Todos_A_PDF() no ejecuta el bucle, convierte la primer hoja y luego presenta un error de ejecución.

Comparto nuevamente el archivo con las correcciones

Agradezco de antemano!
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Antoni Masana (2477 intervenciones) el 08/02/2021 12:04:59
Lo que veo es un problema que no se cual es la respuesta buena.

En esta macro:

1
2
3
4
5
6
7
8
9
10
11
12
Sub CargarDescripciones()
    Dim puesto As String
    'busco el rango de filas con datos
    i = 5
    puesto = Sheets("Base_de_datos").Cells(i, 19).Value  ' <--- Hace referencia a la columna 'S'
    While (puesto <> "")
        ...
        puesto = Sheets("Base_de_datos").Cells(i, 1).Value  ' <--- Hace referencia a la columna 'A'
    Wend
    Sheets("Base_de_datos").Activate
    MsgBox "Generación de hojas finalizada!"
End Sub

Antes de entrar en en el WHILE hace referencia a la columna 19 ( S ) y dentro a la columna 1 ( A ). Los textos son diferentes.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Columna - A                  Columna - S
--------------------------   --------------------------------
Tecnico INV                  En - Tecnico INV
Analista Administrativo      En - Analista Administrativo
Enólogo Asistente            En - Enólogo Asistente
Supervisor de Bodega         En - Supervisor de Bodega
Operario de Bodega           En - Operario de Bodega
Operario de Llenado          En - Operario de Llenado
Operario de Dosificadoras    En - Operario de Dosificadoras
Jefe de Enología             En - Jefe de Enología
Administrativo de Almacén    Al - Administrativo de Almacén
Operario de Almacén          Al - Operario de Almacén
Clarkista de Insumos         Al - Clarkista de Insumos
Operador de Insumos          Al - Operador de Insumos

Y esta macro depende de con el nombre de que columna se crea la hoja con ese mismo nombre se tiene que buscar.

1
2
3
4
5
6
7
8
Sub Exportar_Todos_A_PDF()
    Dim Nombre As String, i As Long
    i = 5
    Ruta = "C:\PDF_DESCRIPCIONES_DE_PUESTO\"
    If Dir(Ruta, vbDirectory) = "" Then MkDir (Ruta)
 
    While Sheets("Base_de_Datos").Cells(i, "S") <> ""    ' <--- Hace referencia a la columna '19'
        Nombre = Sheets("Base_de_Datos").Cells(i, "S")

Saludos.
\\//_
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
Imágen de perfil de Diego
Val: 22
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas de excel a PDF

Publicado por Diego (7 intervenciones) el 08/02/2021 12:50:41
Funciona perfectamente... era el nombre de las hojas lo que rompía la macro!

Muchísimas Gracias por la ayuda!

Saludos

Diego
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