Sie sind auf Seite 1von 6

MOSTRAR DATOS EN UN LISTBOX

Y EXPORTAR DE EXCEL A PDF



Cuando trabajamos con formularios y necesitamos mostrar un informe o el detalle de una
serie de datos, por comodidad lo solemos hacer con una hoja de clculo. Esto tiene sus
ventajas pero tambin sus inconvenientes, por una parte podemos modificar la informacin
que extraemos y mostramos y por otra no requiere demasiado trabajo a la hora de hacer la
instruccin en VBA para que muestre u oculte una hoja. Pero el inconveniente es que es
posible que no deseemos que el usuario final tenga posibilidad de modificar datos y solo
queramos que el usuario visualice los datos. Para ello os propongo la siguiente entrada
donde vamos a tratar la figura del Listbox como control de formulario y su gran utilidad.
Pongamos como ejemplo que estamos realizando un proyecto en VBA para la creacin de
un programa de gestin de almacn. Una parte esencial sera sin duda el inventario, que al
fin y al cabo es la base de datos del programa. Supongamos que ya tenemos nuestro
inventario en un hoja Excel y queremos mostrarlo pulsando un botn, lo primero sera
construir un formulario, que podra ser parecido al que muestro a continuacin:

Para que cuando abramos nuestro archivo se muestre directamente el formulario, debis
utilizar esta macro y pegarla en el mdulo ThisWorkbook:
Private Sub Workbook_Open()
'Cuando abrimos el libro se muestra el userform1
UserForm1.Show
End Sub
Lo siguiente es escribir el cdigo en el botn de comando Ver Inventario que lo que har
ser mostrar el Listbox con el inventario completo:
Private Sub CommandButton3_Click()
'Mostramos el userform2 y cargamos los datos
Hoja2.Visible = xlSheetVeryHidden
Load UserForm2
UserForm2.Show
End Sub
As, una vez que pulsemos en el botn, se mostrar la siguiente pantalla:

Como podis observar lo que se muestra es un formulario (userform2) con un cuadro de
lista (Listbox) dentro. El listbox lo obtendris en el Cuadro de Herramientas pulsando
en Cuadro de lista, tal y como muestro en la imagen.

Una vez que tenemos el cuadro de lista incrustado en el formulario, aadimos dos botones
que nos sern de ayuda SALIR y PASAR A PDF, y que luego comentar. En el
Listbox vamos a pegar la siguiente macro, donde lo que haremos ser decirle al cuadro de
lista que muestre el contenido del inventario que se encuentra en la hoja2 en el rango B2
a E y que puede llegar hasta el fin de la hoja. El resto del cdigo es necesario para evitar
que el usuario vea como la hoja2 de Excel se muestra, y para ello debemos mostrarla y
ocultarla en el mismo momento y sin el refresco de pantalla:
Private Sub UserForm_Initialize()
'mostramos hoja2
Hoja2.Visible = xlSheetVisible
Hoja2.Select
'cargamos los datos del inventario en el listbox1
Me.ListBox1.RowSource = "B2:E" & Hoja2.Range("B" & Rows.Count).End(xlUp).Row
'ocultamos la hoja2
Hoja2.Visible = xlSheetVeryHidden
'refrescamos pantalla
Application.ScreenUpdating = True
End Sub
Siguiendo con el resto de herramientas, en el botn SALIR pegamos el siguiente cdigo:
Private Sub CommandButton1_Click()
'salimos del userform2
UserForm2.Hide
'ocultamos la hija excel con el detalle de inventario
Hoja2.Visible = xlSheetVeryHidden
End Sub
De sta forma lo que hacemos es ocultar el cuadro de lista con el inventario y volver al
formulario inicial. El siguiente botn lo pongo como curiosidad, sera exportar los datos del
inventario a un PDF, para ello es necesaria la siguiente macro:
Private Sub CommandButton2_Click()
'desactivamos la actualizacin de pantalla
Application.ScreenUpdating = False
'hacemos visible la hoja2 con el inventario
Hoja2.Visible = xlSheetVisible
'exportamos los datos a PDF y los guardamos automticamente en mis documentos permitiendo su
visualizacin previa.
Hoja2.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Inventario",
OpenAfterPublish:=True
'ocultamos la hoja2
Hoja2.Visible = xlSheetVeryHidden
'refrescamos pantalla
Application.ScreenUpdating = True
End Sub

Esta macro guarda directamente la hoja2 como PDF en mis documentos con el nombre
Inventario y al mismo tiempo muestra el PDF para que veamos qu es lo que hemos
guardado:

Previamente, la hoja2 hay que configurarla adecuadamente para que muestre el mismo
encabezado en todas las hojas ( Diseo de Pgina, botn imprimir ttulos) y acotar los
saltos de pgina (Vista, Ver saltos de pgina).
Os dejo imgenes relacionadas para poder configurar la hoja2 para exportar a PDF:


Espero que os haya servido de ayuda en vuestro trabajo diario y proyectos futuros :)
Nota importante 1: la hoja2 Inventario, est oculta utilizando editor de VBA en
propiedades de la hoja, para poder verla, tenis que entrar en VBA, seleccionar la hoja y en
Propiedades de la Hoja Pulsar en Visible y elegir la opcin: xlSheetVisible, as:

Nota importante 2: El botn Pasar a PDF solo funcionar en versiones Excel 2007 y
superiores, que tienen la propiedad de guardar como PDF, en versiones anteriores, mostrar
un error.
Saludos!!
Descarga el archivo de ejemplo pulsando en: DATOS EN LISTBOX Y EXPORTAR
DE EXCEL A PDF

Das könnte Ihnen auch gefallen