Enviar varias hojas de un Libro de Excel a archivo Pdf

Por

Es común que tengas un libro con muchas hojas y solamente quieras enviar  algunas de ellas a un archivo de PDF.

Con un formulario (UserForm) se pueden listar todas las hojas, cada hoja con la opción de  poder seleccionarla y un botón para enviarlas a imprimir.

La idea es esta, presionas un botón en alguna hoja de tu excel y que te aparezca esta ventana con todas las hojas de tu libro.

enviar-excel-a-pdf-1

Para crear el formulario sigue los siguientes pasos:

Instrucciones para crear un UserForm

  1. Abre tu hoja de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / UserForm
  4. En el panel del UserForm creas los siguientes controles un Label, un ListBox y un botón.
  5. Para crear un control selecciona el control del cuadro de herramientas y arrástralo al userform

enviar-excel-a-pdf-2

  1. Después de poner el control puedes hacerlo más grande.
  2. Presiona el botón "Ver Código"

enviar-excel-a-pdf-3

  1. En el panel que te abre, pega el siguiente código:
Dim hojas

Dim cargando

'

Private Sub CommandButton1_Click()

'Por.Dante Amor

Dim Pdfhojas()

Dim HojasOcultas()

Application.ScreenUpdating = False

Application.DisplayAlerts = False

ruta = ThisWorkbook.Path & "\"

arch = "varias"

n = -1

m = -1

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then

h = ListBox1.List(i)

n = n + 1

ReDim Preserve Pdfhojas(n)

Pdfhojas(n) = h

wvis = Sheets(h).Visible

If wvis <> -1 Then

m = m + 1

ReDim Preserve HojasOcultas(m)

HojasOcultas(m) = h

Sheets(h).Visible = -1

End If

'Sheets(h).PrintOut Copies:=1, Collate:=True

'Sheets(h).Visible = wvis

End If

Next

If n > -1 Then

'Guarda archivo nuevo en binario

ruta = ThisWorkbook.Path & "\"

arch = "varias hojas.pdf"

'Sheets(hojas).Copy

'ActiveWorkbook.SaveAs _

Filename:=ruta & arch, _

FileFormat:=xlExcel12, CreateBackup:=False

'ActiveWorkbook.Close False

Sheets(Pdfhojas).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:=ruta & arch & ".pdf", _

Quality:=xlQualityStandard, IncludeDocProperties:=True, _

IgnorePrintAreas:=False, OpenAfterPublish:=False

If m > -1 Then

Sheets(HojasOcultas).Visible = 0

End If

End If

MsgBox "Archivo guardado", vbInformation

End Sub

'
Private Sub ListBox1_Change()

'Por.Dante Amor

If cargando Then Exit Sub

cargando = True

For i = 0 To ListBox1.ListCount - 1

For j = LBound(hojas) To UBound(hojas)

If LCase(ListBox1.List(i)) = LCase(hojas(j)) Then

ListBox1.Selected(i) = True

Exit For

End If

Next

Next

cargando = False

End Sub

'
Private Sub UserForm_Activate()

'Por.Dante Amor

'Hojas que siempre se deben considerar

hojas = Array("Hoja A", "Hoja B")

cargando = True

ListBox1.MultiSelect = 1

ListBox1.ListStyle = 1

For Each h In Sheets

Select Case Left(UCase(h.Name), 2)

Case "AC", "AS" 'Poner las 2 primeras letras de las

'hojas que no deben aparecer en la lista

'
Case Else

ListBox1.AddItem h.Name

For j = LBound(hojas) To UBound(hojas)

If LCase(h.Name) = LCase(hojas(j)) Then

ListBox1.Selected(ListBox1.ListCount - 1) = True

Exit For

End If

Next

End Select

Next

cargando = False

End Sub

9. En esta versión, para enviar hojas a Pdf, tiene unas consideraciones:

  • En la lista de hojas, también van a aparecer las hojas que se tienen ocultas.
  • En la macro puedes definir cuáles hojas siempre se deben enviar a al archivo PDF, solamente agrega el nombre de hojas en la siguiente línea de la macro:

hojas = Array("Hoja A", "Hoja B")

  • También en la macro puedes excluir las hojas que no quieres que aparezcan en la lista, por ejemplo, si tienes varias hojas que empiezan con las letras “AC” y todas esas hojas no quieres que aparezcan en la lista, entonces puedes actualizar las letras en la siguiente línea de la macro:

Case "AC", "AS"

10. Regresa a tu hoja de excel y realiza lo siguiente para poner un botón en una hoja y poder abrir el formulario.

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: abrir
  10. Para ejecutarla dale clic a la imagen.

Macro para abrir el formulario

Sub Abrir()

UserForm1.Show

End Sub

Listo, presiona el botón de la hoja para ver la lista de hojas, selecciona una o varias y presiona el botón para generar el Pdf.

Descargar archivo.

Contenido relacionado:
Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.


Déjenos su opinión

Una opinión
  1. Irving Dice:

    Hola.

    Me sale el siguiente error de sintaxis en la fila:

    Filename:= ruta & arch, _

    Si me pueden apoyar

    saludos

    Responder
En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc., pero debe hacerlo con respeto, sin insultar y sin ofender a otros.

Información legal aplicable para Colombia.

¿Preocupado por su pensión? Manténgase Informado.