Excel VBA para obtener el título del sitio web de url

Título de la página HTML en Excel VBA

Sé que esto es bastante viejo, pero estoy teniendo dificultades con esto. He creado un analizador de historial de navegador que recorre los datos históricos de Firefox, IE, Safari y Chrome en las computadoras de nuestros usuarios (Office) y luego obtiene títulos para las páginas que no usan este código.

Recibo ventanas emergentes de IE aunque debería estar oculta. ¿Desea abandonar esta página, descargar ventanas emergentes, instalar este ActiveX esto o eso es lo que tengo que cerrar a medida que surjan?

¿Hay alguna forma de suprimirlos o cerrarlos automáticamente de VBA? Si no lo hago a mano, la computadora / Excel finalmente deja de funcionar, ya que termino con varias ventanas de IE no cerradas o se produce un error porque no puede abrir más instancias de IE.

Además, me siento bastante mal al saber que IE está abriendo sitios de los que no sé nada. Tenemos más infecciones en esta oficina de las que he tenido que tratar antes. Tenemos que usar IE para que el software de la empresa se ejecute.

¿Hay alguna forma mejor de hacerlo o simplemente somos víctimas del sistema? Estoy asombrado de lo poco que se puede hacer en MS Office VBA en comparación con OOo BASIC. Al menos en cuanto a funciones básicas (redimensionamiento de matrices, soporte de FTP).

Por favor, por el amor de los monos, que haya una mejor manera.

También he intentado ...

Function fgetMetaTitle(ByVal strURL) As String

Dim stPnt As Long, x As String
Dim oXH As Object
'Get URL's HTML Source
Set oXH = CreateObject("msxml2.xmlhttp")
With oXH
    .Open "get", strURL, False
    .send
    x = .responseText
End With
Set oXH = Nothing
'Parse HTML Source for Title
If InStr(1, UCase(x), "<TITLE>") Then
    stPnt = InStr(1, UCase(x), "<TITLE>") + Len("<TITLE>")
    fgetMetaTitle = Mid(x, stPnt, InStr(stPnt, UCase(x), "</TITLE>") - stPnt)
Else
    fgetMetaTitle = ""
End If

End Function

Y éste.....

Function getMetaDescription(ByVal strURL As String) As String

'Requires Early Binding Reference to MSHTML Object Library
Dim html1 As HTMLDocument
Dim html2 As HTMLDocument

Set html1 = New HTMLDocument
Set html2 = html1.createDocumentFromUrl(strURL, "")

Do Until html2.readyState = "complete": DoEvents: Loop

getMetaDescription = html2.getElementsByTagName("meta").Item("Description").Content

Set html2 = Nothing
Set html1 = Nothing

End Function

No han trabajado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta