Hoy quiero subir una entrada muy interesante y un poco distinta a las anteriores, se trata de la posibilidad de insertar el explorador web en una hoja Excel.
Para empezar a montar nuestro pequeño explorador tenemos que seleccionar la hoja en la que vamos a insertar la herramienta. Será la «hoja1» de un libro cualquiera de Excel.
En la parte superior vamos a colocar un botón de comando del cuadro control de formulario (Pestaña «Programador»>»Insertar»>»Controles de formulario») y lo vamos a llamar «Navegador». Seguidamente seleccionamos unas cuantas celdas, en este caso desde «D3» a «K3» y las combinamos, (aquí será donde escribamos la ruta de las páginas web a consultar). Os debería quedar algo así:
Ahora que tenemos la forma, podemos ir al fondo de la cuestión. Para que todo esto funcione debemos insertar el controlador Microsoft Web Browser en la hoja1. Para ello vamos a (Pestaña «Programador»>»Insertar»>»Control activeX») .Pulsamos en el símbolo de las herramientas que pone más controles. Se nos abrirá un cuadro de diálogo y debemos buscar y seleccionar Microsoft Web Browser:
Una vez que pulsemos y aceptemos, automáticamente se activa la pestaña de «Modo Diseño» y pulsamos en la hoja y seleccionamos el área que queremos para que el explorador muestre los contenidos, una ve que tengamos el área bien definida, desactivamos el «Modo Diseño».
Ahora que tenemos la hoja lista, es el momento de hacer unos cuantos ajustes en la programación. Entramos en Visual Basic y nos vamos a la «hoja1» y escribimos el siguiente código:
Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
Cerramos VBA y nos vamos a la hoja1 y con el botón derecho del ratón seleccionamos el Botón que habíamos hecho llamado «Navegador». Elegimos la macro que se llama «Verificarmapa» y ejecutamos. El resultado sería este:
End Sub
Sub Verificarmapa()
'Decimos que el navegador lea la celda D3 de la Hoja1 y nos muestre la web que hemos escrito.
WebBrowser1.Navigate2 Sheets("Hoja1").Range("D3").Value
End Sub
Y esto ha sido todo por hoy. En la próxima entrada trataré algo parecido pero un poco más elaborado, os propondré un calculador de distancias basado en Google Maps.
Como siempre os dejo el archivo para que echéis un vistazo y podáis examinarlo con calma.
Saludos.
Descarga el archivo pulsando en: INSERTAR NAVEGADOR
Buen día!!! De qué forma puedo modificar el rango de celdas donde se muestra el navegador? Quisiera que fuese más pequeño para trabajar simultaneamente en la misma hoja con datos extraidos de la Web incrustada. Cómo puedo enviarte un archivo para que lo revises? Realmente muy agradecido por compartir tus conocimientos de manera desinteresada. He tomado varios de tus ejemplos y los he adaptado a mi trabajo diario. Cada día aprendiendo más!!!! Saludos desde Barquisimeto Lara Venezuela!!!!
Hola Pedro,
Puedes enviar el archivo a excelsignum@yahoo.es indicando el tamaño que necesitas y también te indicaré como modificarlo. De todas formas, el tamaño del WebBrowser lo puedes modificar cambiándolo a modo diseño (entras en la pestaña programador, luego pulsas en la opción «modo diseño» y ya podrías modificar el tamaño.
Muchas gracias por el comentario. Y efectivamente, todos los días son una oportunidad de aprender 🙂
Saludos
Hola nuevamente!!!! Apenas escribí mi duda continué «cacharreando» hasta que logré lo que deseaba. La Web que utilizo es para verificar número de «RIF» de clientes ( es un número de identificación fiscal) y trabajo facturas de clientes que necesito verificar el «RIF» pero en archivos cada vez diferentes. Cómo le puedo hacer para insertar esta Web-consulta ó llamarla cada vez que necesite verificar un número de RIF? Me consume tiempo salir del Excel, abrir el navegador, abrir la consulta, consultar el RIF, copiarlo y regresar a Excel para pegarlo. Qué me sugieres??
Hola Pedro,
Además de la alternativa a invocar la web que utilizas directamente en la hoja excel y hacerla más pequeña (como has hecho). Solo existe otra alternativa, y es mediante una consulta desde la página a la web, mediante código.
Ahora bien, hay cierto problema dado que esa página seguramente tenga la necesidad de escribir un código antes de realizar la consulta para obtener el dato y así evitar programas como este. Tendría que ver cuál es la página a la que deseas realizar la consulta y luego verificar si es posible realizar el trabajo.
No obstante, creo que con la alternativa que tienes (webbrower) insertado. Un saludo!
hola segu muy agradecido por tu aporte estaba buscando algo igual, ya que yo estoy siempre excel y ahora estaré mas informado estando la web en mi lugar de trabajo =D , espero que me envíes mas nuevos tick sobre excel saludos y gracias.
Buen día!!! Ciertamente la página tiene un Captcha!! http://contribuyente.seniat.gob.ve/BuscaRif/BuscaRif.jsp Como le indiqé estoy buscando la manera de ahorrar tiempo al usarla. Le envío el enlace para que lo revise y me indique que se puede hacer!! Agradecido de antemano!!!
P.D. No le había escrito porque tengo problemas al conectar con mi cuenta de Google+ y lo hice conectandome con mi cuenta de Twitter..
Muchas Gracias por tus aportes y conocimientos, nos es de bastante utilidad para los que a diario usamos Excel
Gracias a ti, Eliseo. Me alegra que la web resulte de ayuda y de interés 🙂
Hola, me ha gustado el post, lo hice rapido y sencillo, gracias, yo quisiera saber si una vez que se hace todo este proceso de insertar el navegador, habría alguna manera de poder obtener datos de dentro de ese navegador, de alguna pagina que consulte, poder extraer con una macro algo que se copie de ese navegador. Lo intente y no me sale. Estoy trabajando en hacer un juego de adivinar palabras en excel, lo que quisiera es buscar los significados o sinonimos de esas palabras del juego en el navegador.
Hola Ginés,
Según me comentas, no es necesario que incrustes el navegador en la página de Excel. Lo que necesitas es una macro que busque en la web un sinónimo de una palabra. Esto lo puedes hacer con esta macro:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub SINONIMO()
Dim dato As String
Dim sinonim As String
Dim ie As Object
sinonim = Sheets(1).Range("A2").Value
DoEvents
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate ("http://www.wordreference.com/sinonimos/" & sinonim)
Dim x As Integer
x = 0
Do Until ie.Busy = False
Sleep 50
x = x + 1
Loop
dato = ie.Document.getElementById("article").innertext
ie.Quit
Sheets(1).Range("A4").Value = dato
End Sub
He escogido wordreference.com para buscar los sinónimos. De todas formas te envío la macro en archivo por correo. Espero que te sirva.
Saludos.
Gracias, lo revisare y quizas tenga que acomodarlo a mi proyecto, muchas gracias , seguro que me va a servir. Otra pregunta, tengo varios textbox dentro de un formulario de vba, donde escribo una letra dentro de cada textbox y seguidamente pasa al siguiente, como puedo poner una macro para poder usar la tecla de retroceso y que vaya al anterior en caso de que me equivoque al poner una letra?Gracias de antemano, el proyecto va sobre un juego donde hay que adivinar palabras, y lo de los sinonimos es para que te de pistas de esa palabra.
Hola Ginés, Perdona por la espera (aprovecho el tiempo del fin de semana para disfrutar de mi peque, que por la semana siempre me falta tiempo :).
Una posible solución (se podrían investigar más métodos) sería esta, teniendo en cuenta que tu formulario es userform1 y los textbox van hasta de 1 a 4:
Coloca este código directamente en el userform, y cada vez que pulses retroceso, pasará del textbox actual al anterior:
Private Sub textbox2_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 Then box1
End Sub
Private Sub textbox3_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 Then box2
End Sub
Private Sub textbox4_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 8 Then box3
End Sub
Function box1()
UserForm1.TextBox1.SetFocus
End Function
Function box2()
UserForm1.TextBox2.SetFocus
End Function
Function box3()
UserForm1.TextBox3.SetFocus
End Function
Saludos!!
Muchas gracias nuevamente, también lo pondré en practica pronto. Saludos Segu.
Buenos días,
Necesito de tu ayuda. Estoy siguiendo cada uno de los pasos para insertar el Navegador Web, sin embargo al insertar Microsoft Web Browser, me arroja una alerta que dice «No se puede insertar el Objeto» y la Fx que aparece es =INCRUSTAR(«Shell.Explorer.2″;»»)… No se que puede ser lo que me impida realizar la inserción. Quedo a la espera de tu ayuda.
Hola Adolfo,
Lo que te sucede no es un problema de tu equipo ni de cómo lo estas haciendo, es un problema de las actualizaciones, en concreto de la actualización de seguridad MS14-082 de office.
Microsoft ofrece la siguiente solución:
https://support.microsoft.com/es-es/kb/3025036
Normalmente se soluciona con lo descrito en la parte del artículo que comienza por: Control de extensores desusados.
Espero que puedas solucionar el problema.
Saludos.
Buen dia, oye hay forma de que una vez cargado el navehador se le pasen datos a un formulario con una macro??
Hola Aeonics,
Exactamente, qué tipo de datos quieres pasar de un webbrowser a un formulario?, Es posible que lo que intentes realizar es descargar datos de una web en un formulario?.
Saludos.
quiero automatizar unos datos de una hoja de excel hacia un formulario, ya he visto varios tutoriales pero para que funcionen el sitio debe estra como http://www.web1.xxx/paginaformulario, la que tengo solo dice jsp
Hola Aeonicss:
Bueno, para realizar lo que comentas, es decir, desde una hoja excel enviar datos a un formulario en una web, puedes utilizar una macro en la que deberás identificar los ID o Name de cada textbox del formulario y trasladar la información.
En este ejemplo, envío el nombre de esta web al cuadro de búsqueda de google y luego ejecuto el click para la búsqueda:
Dim IE As Object
Sub ejecutar()
Application.ScreenUpdating = False
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://www.google.es"
Do Until IE.ReadyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:01"))
IE.Document.getElementById("lst-ib").Value = "Excel Signum"
Application.Wait (Now + TimeValue("0:00:01"))
IE.Document.getElementById("_fZl").Click
IE.Visible = True
Set IE = Nothing
Application.ScreenUpdating = True
End Sub
Por ello, debes identificar los ID o Name y configurar la macro para tu proyecto.
Saludos.
asi es, gracias pero ese metodo ya lo intente y no funciona con la pagina que tengo, cuando veo el fuente no veo los ID
Hola aeonicss.
Entonces necesitaría más información. La página web y el formulario y así podría verificar que método necesitas.
Saludos
Hola que tal
Tengo una duda amigo, he llegado hasta el paso donde se me habilita la opcion de «Design Mode» y tengo que delimitar el area donde se mostrara o arrojara los datos de la pagina web pero al momento de delimitar el area me aparece un cuadro de dialogo donde menciona que no se puede insertar el objeto, que es lo que ocasiona que no se inserte?
Hola Manuel Antonio:
Es un problema que se genera como causa de las actualizaciones de Microsoft, y que ofrece también una solución:
https://support.microsoft.com/es-es/kb/3025036
Normalmente se soluciona con lo descrito en la parte del artículo que comienza por: Control de extensores desusados.
Espero que puedas solucionar el problema.