Excel 刮取本地HTML文件

Excel 刮取本地HTML文件,excel,vba,dom,Excel,Vba,Dom,我想打开一个本地HTML文件并将其存储为HTMLDocument,这样我就可以将其刮到excel中。但是,所有可用信息都是针对web上的html页面的。例如,该代码对www.bbc.co.uk非常有效,但对本地文件无效: Sub queryXMLlocal() Dim XMLPage As New MSXML2.XMLHTTP60 Dim HTMLDoc As New MSHTML.HTMLDocument Debug.Print Application.ActiveWorkbook.Path

我想打开一个本地HTML文件并将其存储为HTMLDocument,这样我就可以将其刮到excel中。但是,所有可用信息都是针对web上的html页面的。例如,该代码对www.bbc.co.uk非常有效,但对本地文件无效:

Sub queryXMLlocal()
Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument

Debug.Print Application.ActiveWorkbook.Path

XMLPage.Open "GET", "<filepath>\KOND.html", False
XMLPage.send

If XMLPage.Status <> 200 Then
MsgBox "Problem" & vbNewLine & XMLPage.Status & " - " & XMLPage.statusText
Exit Sub
End If

End Sub
子查询xmllocal()
Dim XMLPage作为新的MSXML2.XMLHTTP60
将HTMLDoc设置为新的MSHTML.HTMLDocument
Debug.Print Application.ActiveWorkbook.Path
XMLPage.Open“GET”,“\KOND.html”,False
XMLPage.send
如果是XMLPage.Status 200,则
MsgBox“问题”&vbNewLine&XMLPage.Status&“-”&XMLPage.statusText
出口接头
如果结束
端接头
交替使用

Sub GetHTMLDocument()

Dim IE As New SHDocVw.internetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument


IE.Visible = True
IE.navigate "https://www.bbc.co.uk/"

Do While IE.readyState <> READYSTATE_COMPLETE
Loop

    ' Wait while IE loading...

Set HTMLDoc = IE.Document
end sub
子GetHTMLDocument()
Dim IE作为新的SHDocVw.internetExplorer
将HTMLDoc设置为MSHTML.HTMLDocument
可见=真实
即“导航”https://www.bbc.co.uk/"
在IE.readyState readyState\u完成时执行此操作
环
“等一下,我正在装货。。。
设置HTMLDoc=IE.Document
端接头
工作正常,但使用本地文件时会出现以下错误:

“调用的对象已与其客户端断开连接”


我可以使用
HTMLdocument.open
?虽然我也不能让它工作。

这是我通常使用的功能:

Public Function GetHTMLFileContent(ByVal filePath As String) As HTMLDocument
    Dim fso As Object, hFile As Object, hString As String, html As New HTMLDocument
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set hFile = fso.OpenTextFile(filePath)

    Do Until hFile.AtEndOfStream
        hString = hFile.ReadAll()
    Loop

    html.body.innerHTML = hString
    Set GetHTMLFileContent = html
End Function

如果它不是由web服务器提供服务,那么将如何响应HTTP请求?同样的道理,你为什么要“刮”它呢?您是否将数据存储为HTML?您需要将本地文件加载到字符串中,然后才能将其写入新的
HTMLDocument
。再见Alex K.非常感谢。这是我的最后一段代码,它似乎可以工作:Sub-loadLocalfileAsString()Dim myFile作为字符串Dim text作为字符串Dim textline作为字符串Dim odoc作为对象myFile=“filepath\KOND.html”打开myFile作为#1 Do进行输入,直到EOF(1)行输入#1,textline text=text&textline Loop Close#1 Set odoc=New HTMLDocument odoc.打开odoc.编写文本odoc.关闭subcomminer,是的,奇怪的是,我从某个ftp进程中收到一个HTML文件,我需要从if中获取数据并将其放入excel.tkx QHarr很好的解决方案无需担心:-)