Uso de VBA para automatizar las sesiones de Internet Explorer desde una hoja de cálculo de Excel

Su integración con Windows permite el control de Internet Explorer de varias maneras sorprendentes utilizando el script de Visual Basic para Aplicaciones (VBA) desde cualquier aplicación que lo soporte, como Word, Outlook o Excel.

Su integración con Windows permite el control de Internet Explorer de varias maneras sorprendentes utilizando el script de Visual Basic para Aplicaciones (VBA) desde cualquier aplicación que lo soporte, como Word, Outlook o Excel.
Anuncio

Su integración con Windows permite el control de Internet Explorer de varias maneras sorprendentes utilizando el script de Visual Basic para Aplicaciones (VBA) desde cualquier aplicación que lo soporte, como Word, Outlook o Excel.

La automatización de VBA, especialmente la automatización directa de un navegador como IE, como verá en este artículo, es exactamente el tipo de cosa que eleva a VBA de una secuencia de comandos de programación conveniente a un potente lenguaje de automatización. Lo que lo hace tan increíble es el hecho de que muchas aplicaciones con controles u objetos se crean simplemente con el propósito de permitirle integrarse utilizando el lenguaje de programación VBA.

A través de los años, te mostramos cómo hacer cosas geniales con VBA. Por ejemplo, puede usarlo para enviar correos electrónicos directamente desde Excel Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Le mostraremos cómo configurar correos electrónicos automáticos desde Excel utilizando Collaboration Data Objects, (CDO) y scripts VBA. Nuestras plantillas de código hacen que esto sea mucho más fácil de lo que parece. Leer más, puede exportar automáticamente las tareas de Outlook a una hoja de cálculo de Excel Cómo exportar las tareas de Outlook a Excel con VBA Cómo exportar las tareas de Outlook a Excel con VBA Ya sea que usted sea o no un fan de Microsoft, una cosa buena que se puede decir sobre los productos de MS Office, al menos, es lo fácil que es integrar cada uno de ellos entre sí .... Lea más, e incluso puede diseñar su propio navegador de Internet Cómo hacer su propio navegador de Internet básico con VBA Cómo hacer su propio navegador Su propio navegador de Internet básico usando VBA Cuando realmente se detiene a pensar en ello, un navegador de Internet en su forma más simple no es realmente una aplicación tan impresionante. Quiero decir, sí, Internet es increíble según los estándares de cualquier persona. El concepto de vincular ... Leer más! Tampoco son solo productos de Microsoft. Existen aplicaciones de terceros de todo tipo de proveedores que han integrado VBA y objetos compatibles en su software, desde Adobe Acrobat SDK hasta ObjectARX SDK para AutoCAD. Hay formas de "conectar" más aplicaciones de las que probablemente se haya dado cuenta.

La idea

En este caso, vas a conectar Excel con IE. Por que IE? Debido a que Internet Explorer está tan bien integrado con el sistema operativo que realmente no tiene que hacer mucho para comenzar a usar la automatización de IE en VBA en otros productos de Microsoft como Word o Excel. Esa es la belleza de la entrada. En este artículo verás cómo funciona esta automatización, y en un artículo futuro verás cómo hacer casi el mismo tipo de cosas con otros navegadores.

Lo que voy a mostrarte aquí es una aplicación aparentemente simple, pero tiene muchas aplicaciones donde puedes usar este código para hacer una variedad de cosas interesantes con tu navegador. La conclusión es que vas a crear una hoja de cálculo de Excel con el fin de guardar rápidamente todas las ventanas abiertas del navegador con un solo clic de un botón. Puede guardar esta hoja de cálculo y alejarse o apagar su computadora.

Regrese una hora o tres días después, abra la hoja de cálculo, haga clic en otro botón y las URL guardadas se volverán a abrir en la misma cantidad de pestañas que tenía antes. El uso genial obvio de esto sería almacenar una biblioteca completa de configuraciones de espacio de trabajo en línea comunes en Excel. Luego puede restaurar ese espacio de trabajo con un clic de un botón sin tener que encontrar todas esas URL nuevamente.

Automatizando Internet Explorer con VBA

Lo primero que debe hacer es abrir Excel (estoy usando 2013 - otras versiones son similares cuando se trata de programación de VBA) y vaya al elemento del menú Desarrollador. Dentro de allí, verá un botón Insertar, que coloca todos sus controles. Seleccione el control del botón pulsador ActiveX y colóquelo en su hoja de cálculo.

IE-automation1

Presumiblemente, ya ha creado un encabezado para las URL si lo desea, pero no es necesario. Esta es realmente una biblioteca de almacenamiento de URL, por lo que los encabezados realmente no importan. Una vez que agregue el botón, haga doble clic en él para abrir el editor de VBA. En la esquina inferior izquierda, verás las propiedades de tu nuevo botón.

Cambie el nombre a algo así como cmdSaveURLs y establezca el Título en "Guardar URL", lo que indica que este es el botón para guardar todas las URL abiertas de su navegador IE.

save-urls

A continuación, vaya al menú Herramientas en la parte superior del editor de VBA, haga clic en Referencias en el menú y desplácese hacia abajo en la lista larga para encontrar la referencia de "Microsoft Internet Controls". Haga clic en la casilla a la izquierda y luego haga clic en Aceptar.

IE-automation3

Ahora estás listo para rodar. En el área de texto del editor, debería ver una línea que dice "Private Sub cmdSaveURLs_Click ()". Si no lo ve, haga clic en el cuadro desplegable de la izquierda sobre el área de texto y busque cmdSaveURLs en la lista. Selecciónelo y creará la función Click () para usted.

Este es el código que desea insertar en esa función:

 im IE As Object Dim shellWins Como nuevo ShellWindows Dim IE_TabURL As String Dim intRowPosition As Integer intRowPosition = 2 Para cada IE En shellWins IE_TabURL = IE.LocationURL If IE_TabURL vbNullString Then Sheet1.Range ("A" & intRowPosition) = IE_TabURL intRowPosition = intRowPosition + 1 End If Next Set shellWins = Nothing Set IE = Nothing 

La referencia Microsoft Scripting Runtime lo hace para que pueda acceder al objeto ShellWindows, lo que le permite iterar a través de Windows y ubicar las instancias de IE que tiene abiertas. Este script ubicará cada URL que tenga abierta y la escribirá en la hoja de cálculo de Excel.

IE-automation4

Entonces, en teoría, si está trabajando en algo así como crear un blog, y tiene algunos elementos abiertos, como ventanas de búsqueda, el editor de su blog o una ventana del calendario, todas esas pestañas estarán activas. Si tiene que cerrar o salir apurado, puede ser una verdadera molestia guardar dónde está copiando todas esas URL.

IE-automatización5

Con su nuevo script de Excel, simplemente haga clic en el botón Cargar URLs, y lo cargará directamente en la hoja de cálculo.

IE-automation6

Una advertencia. Si no está utilizando una fila de encabezado, querrá cambiar la línea "intRowPosition = 2" por "intRowPosition = 1" y comenzará en la primera fila en lugar de saltear la fila del encabezado.

Cómo abrir el espacio de trabajo del navegador guardado

La siguiente etapa de este proyecto es ir en la otra dirección. Haga clic en "Cargar URL" y haga que Excel inicie IE y vuelva a cargar todas las URL que haya guardado en la hoja de cálculo. Esto es lo que debería ser la función cmdLoadURLs_Click ().

 Dim IE como objeto Dim shellWins como nuevo ShellWindows Dim IE_TabURL como String Dim intRowPosition As Integer intRowPosition = 2 Establecer IE = CreateObject ("InternetExplorer.Application") IE.Visible = True IE.Navegar Sheet1.Range ("A" y intRowPosition) Mientras IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 While Sheet1.Range ("A" & intRowPosition) vbNullString IE.Navigate Sheet1.Range ("A" & intRowPosition), CLng (2048) Mientras IE.Busy DoEvents Wend intRowPosition = intRowPosition + 1 Wend Set IE = Nada 

Aquí hay unos pocos pasos, pero como puede ver, el código no es tan largo ni complicado. Usted crea una nueva instancia de IE, la hace visible (esto abrirá IE sin cargar una URL). A continuación, cargará la primera URL de la lista.

IE-automatización8

La parte "While IE.Busy" del script espera hasta que la página esté completamente cargada, y luego pasa al resto de las URL en su hoja de cálculo, abriendo una nueva pestaña (eso es lo que hace el "CLng (2048)", hasta toca una celda en blanco en su hoja de cálculo, luego dejará de abrir nuevas pestañas. Aquí está mi navegador IE con las cuatro pestañas originales recuperadas usando el script de automatización Excel IE.

IE-automatización9

Resumen

Mi verdadero objetivo al hacer esto era tener hojas de cálculo individuales para crear colecciones de pestañas para tareas como investigar y escribir en mi propio blog, escribir en MakeUseOf, hacer trabajos de proyectos SEO en el sitio, o una lista completa de otros roles o proyectos que requieren una colección guardada de pestañas que siempre se usan.

Usar una hoja de cálculo para almacenar esas configuraciones y automatizar su apertura en un navegador puede ahorrar mucho tiempo ... y en realidad también es genial.

¿Utiliza algún tipo de automatización de IE en sus aplicaciones de VBA? ¿Ver otros usos interesantes para este tipo de control de IE de Excel? ¡Comparte tus pensamientos y comentarios en la sección de comentarios a continuación!

In this article