Saltar al contenido

Control de la intranet local de Internet Explorer mediante Excel VBA

Deseamos compartir contigo la mejor información que hallamos online. Nosotros esperamos que te sea de utilidad y si puedes compartir algún detalle que nos pueda ayudar a mejorar hazlo con libertad.

Solución:

Aquí hay una solución rápida y fácil para este problema:

En vez de:

set IE = createobject("internetexplorer.application")

Usar:

Set IE = New InternetExplorerMedium

No es necesario modificar la configuración de IE

Esto es lo que está pasando. Cuando su navegador “salta” internamente a una zona de seguridad diferente, por ejemplo, de una dirección local a una dirección de inTRAnet oa una dirección de inTERnet, IE cierra/cae el proceso actual de IE y abre otro con mayor seguridad. Los procesos de IE antiguos y nuevos son procesos secundarios de IE para la tarea principal de IE, por lo que no verá que suceda ni mirando el navegador ni mirando el proceso en el Administrador de tareas. Si usa Process Explorer (gratis de Microsoft), puede ver que esto suceda.

Lo que debe hacer en este tipo de entorno es usar la solución anterior de Anup Upadhyay. Su fragmento de código analiza todas las tareas de IE (principal e hijo no hacen la diferencia) y encuentra el nuevo proceso de IE que apunta a la dirección web que se proporcionó al proceso original. Siempre que no tenga varios navegadores abiertos en la misma dirección, encontrará el nuevo proceso de manera confiable y continuará como lo esperaría.

Nota: Es posible que también necesite usar el InternetExplorerMedio objeto en oposición al Explorador de Internet objeto. También es mejor para “aferrarse” a una sesión.

Aquí está mi versión, que es casi lo mismo que la de Anup.

Referencias para MS Office VBA:

  • Controles de Internet de Microsoft

  • Controles y automatización de Microsoft Shell

norte

Dim IE As InternetExplorerMedium ' This object (the "medium" variety as opposed to "InternetExplorer") is necessary in our security climate
Dim targetURL As String
Dim webContent As String
Dim sh
Dim eachIE

targetURL = "[your URL here]"
Set IE = New InternetExplorerMedium
IE.Visible = False ' Set to true to watch what's happening
IE.Navigate targetURL

While IE.Busy
  DoEvents
  Wend

Do
  Set sh = New Shell32.Shell
  For Each eachIE In sh.Windows
    If InStr(1, eachIE.LocationURL, targetURL) Then
      Set IE = eachIE
      'IE.Visible = False  'This is here because in some environments, the new process defaults to Visible.  
      Exit Do
      End If
    Next eachIE
  Loop
Set eachIE = Nothing
Set sh = Nothing

While IE.Busy  ' The new process may still be busy even after you find it
  DoEvents
  Wend

Prueba este:

Set IE = GetObject("new:D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E")

Sección de Reseñas y Valoraciones

No se te olvide comunicar esta división si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *