Это звучит, как вы загружаете документ, но это не является полным, прежде чем пытаться проверить документ. Когда вы запускаете режим отладки, у документа есть время для завершения загрузки. Лучший способ заставить VBA дождаться загрузки документа полностью - это открыть URL/Документ в синхронном режиме. Вы также захотите проверить, что запрос документа возвратил действительный код состояния HTTP.
Если ваш источник документа действителен XML/XHTML, вы можете получить объект документа непосредственно из XMLHttpRequest, но я предполагаю, что у вас простой старый HTML.
Вы должны знать, что XMLHttpRequest будет извлекать содержимое HTML страницы, но это не будет загружать или запускать какие-либо из вспомогательных сценариев/CSS, так что если какие-либо из этих сценариев бы породило динамический контент HTML , то он не будет присутствовать в документе HTML.
Sub Test()
Const URL As String = "http://stackoverflow.com"
Const CLASS_NAME As String = "row-fluid"
'The getElementsByClassName method is unavailable under some/all IE versions?
'It seems to need to be strongly typed as MSHTML.HTMLDocument
'You'll need to Add a reference to Microsoft HTML Object Libarary
Dim oDoc As MSHTML.HTMLDocument
Dim results As Object
With CreateObject("MSXML2.XMLHttp")
.Open "GET", "http://www.microsoft.com", False
.send
'Check the response is valid
If .Status = 200 Then
Set oDoc = CreateObject("htmlfile")
oDoc.body.innerHTML = .responseText
Set results = oDoc.getElementsByClassName(CLASS_NAME)
End If
End With
End Sub
Пожалуйста, покажите полный код. Особенно там, где происходит «Doc». Вы должны указать время браузера для загрузки сайта. –