问题描述
我正在尝试以下代码
Sub myConSP()
Dim oHtmlSP As HTMLDocument
Dim tSPIndex As HTMLdivelement
Dim tSPIdx As HTMLdivelement
Dim tables As Object
Set oHtmlSP = New HTMLDocument
With CreateObject("WINHTTP.WinHTTPRequest.5.1")
.Open "GET","C:\Users\Future\Desktop\Test.html",False
.send
oHtmlSP.body.innerHTML = .responseText
End With
Set tables = oHtmlSP.querySelectorAll("table[width='100%'] table:first-child")
Debug.Print tables.Length
End Sub
我尝试了不同的方法来通过该代码读取 HTML 本地文件。这样的代码如何引用本地文件HTML文件?
解决方法
我认为你把事情复杂化了。
试试:
Sub myConSP()
Dim oHtmlSP As HTMLDocument
Set oHtmlSP = New HTMLDocument
oHtmlSP.body.innerHTML = "full_path"
'process the file
End Sub
,
这个方法解决了这个问题。我对变量 html
使用了后期绑定,这很重要,因为在使用早期绑定时,对于表长度的属性,我无效地使用了 NULL。
Sub NewTest()
Dim fStream As Object,html As Object,tables As Object,sFolder As String,sFile As String
sFolder = ThisWorkbook.Path & "\"
sFile = "Test.html"
Set fStream = CreateObject("ADODB.Stream")
Set html = CreateObject("HtmlFile")
With fStream
.Charset = "UTF-8"
.Open
.LoadFromFile sFolder & sFile
html.body.innerHTML = .ReadText
.Close
End With
Set tables = html.querySelectorAll("table[width='100%'] table:first-child")
Debug.Print tables.Length
End Sub