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

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.