Abrir archivos PDF en Excel mediante Combobox usando macros vba
Hola a todos. Los saludo con mucho gusto. En este artículo y video te muestro cómo abrir archivos PDF desde Excel, usando macros VBA. Usaremos un formulario donde habrá un Combobox que servirá para enlistar los nombres de varios archivos PDF y un control llamado WebBrowser1 para mostrar el contenido del archivo PDF elegido.
Devolver nombre de archivos PDF
Primero será necesario tener EXCELeINFO add-in instalado para devolver el nombre de los archivos de cualquier carpeta que tenga archivos PDF. Aquí puedes descargar el add-in.
-
Entramos a la pestaña EXCELeINFO.
-
Seleccionamos Archivos > Listar nombre de archivos de una carpeta…
-
Damos clic en Examinar para elegir la carpeta.
-
Marcamos Extensión y escribimos PDF.
-
Damos clic en Aceptar y se creará un archivo con el detalle de archivos de la carpeta.
Figura 1. Devolvemos la ruta y nombre de los archivos PDF.
La ruta y nombre los archivos nos servirá, ya que en base a ese dato es que el control WebBrowser podrá mostrar el contenido de los archivos PDF, de la misma manera en que mostrarían en un navegador Web.
Ver video Abrir archivos PDF en Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
En el video mostramos paso a paso cómo crear este ejemplo.
Diseñar el Formulario
Entramos al IDE de Visual Basic para Aplicaciones (VBA), damos clic derecho en el nombre del archivo y elegimos Insertar > UserForm. Dentro del formulario insertamos los siguientes controles:
-
Una Etiqueta.
-
Un Combobox.
-
Un Botón para cerrar.
-
Un control WebBrowser.
Para mostrar el control WebBrowser damos clic derecho en una sección en blanco del Cuadro de herramientas y elegimos Controles adicionales. En la lista de Controles disponibles marcamos Microsoft Web Browser.
Figura 2. Control Web Browser para mostrar contenido de archivos PDF.
Cómo funciona el formulario
Primero modificamos el orden de las columnas del archivo, en la columna A dejamos el nombre de los archivos y en la columna B dejamos la ruta completa. El Combobox mostrará los nombres de la columna B y mediante un BUSCARV o VLOOUKUP en VBA devolveremos la ruta completa que se encuentra en la columna B, y en base a esa ruta, el control WebBrowser mostrará el contenido del archivo PDF elegido.
Figura 3. Mostramos el contenido del archivo PDF elegido.
Código VBA de las macros
El evento Initialize del formulario se ejecutará al momento de abrir el formulario y el Combobox se llenará con el nombre de los archivos.
Option Explicit ' 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Private Sub UserForm_Initialize() Dim UltimaFila As Integer Dim i As Integer Dim Nombre As String UltimaFila = Application.WorksheetFunction.CountA(ThisWorkbook.Sheets("Hoja1").Range("A:A")) For i = 2 To UltimaFila Nombre = ThisWorkbook.Sheets("Hoja1").Cells(i, 1).Value Me.ComboBox1.AddItem Nombre Next i End Sub
El evento Change del Combobox servirá para mostrar el contenido de cada PDF cada vez que se elige un nombre de la lista.
Option Explicit ' 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Private Sub ComboBox1_Change() Dim Nombre As String Dim RangoMatriz As Range On Error GoTo ManejadorErrores Set RangoMatriz = ThisWorkbook.Sheets("Hoja1").Range("A:B") Nombre = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, RangoMatriz, 2, 0) Me.WebBrowser1.Navigate Nombre Exit Sub ManejadorErrores: MsgBox "Ha ocurrido un error: " & Err.Description, vbInformation, "EXCELeINFO" End Sub
Descargar el archivo de ejemplo
Abrir archivos PDF en Excel mediante listado en Combobox usando macros vba – EXCELeINFO.zip