html文件保存从vba还原
我想重新使用一个web响应的快照来测试一个需要进行一些web抓取的应用程序。我试图做的只是保存响应(来自Chrome)并从文件中重新加载字符串:html文件保存从vba还原,vba,excel,web-scraping,Vba,Excel,Web Scraping,我想重新使用一个web响应的快照来测试一个需要进行一些web抓取的应用程序。我试图做的只是保存响应(来自Chrome)并从文件中重新加载字符串: doc.body.innerHtml = StringFromFile 虽然这看起来像很好的html,但它不起作用。我所说的“不工作”是指在浏览web时未找到标记“表”(6)中的数据。有没有更好的方法来加载html文档 下面的代码试图将现有文档保存到文件中,然后重新使用它。这毫无价值,但也许有人会帮我澄清这一点 干杯 Private Function
doc.body.innerHtml = StringFromFile
虽然这看起来像很好的html,但它不起作用。我所说的“不工作”是指在浏览web时未找到标记“表”(6)中的数据。有没有更好的方法来加载html文档
下面的代码试图将现有文档保存到文件中,然后重新使用它。这毫无价值,但也许有人会帮我澄清这一点
干杯
Private Function GetEWhipersTestHtmlDoc() As HTMLDocument
Dim doc As HTMLDocument
Set doc = New HTMLDocument
Dim sText As String
sText = GetStringFromFile(GetFileName("UnconfirmedRelease"))
doc.body.innerHTML = sText
Set GetEWhipersTestHtmlDoc = doc
End Function
Private Function GetFileName(testName As String) As String
GetFileName = ThisWorkbook.path & Application.PathSeparator & _
"Earnings Whispers Test Scenarios" & Application.PathSeparator & testName & ".txt"
Debug.Assert Dir(GetFileName) <> ""
End Function
Private Function SaveHtmlStringToFile(testName As String, sInnerHtml As String) As String
Dim fso As Object
Dim oFile As Object
Dim sPath As String
Set fso = CreateObject("Scripting.FileSystemObject")
sPath = GetFileName(testName)
Set oFile = fso.CreateTextFile(sPath)
oFile.WriteLine sInnerHtml
oFile.Close
End Function
私有函数geteWhiperTestHtmlDoc()作为HTMLDocument
作为HTMLDocument的Dim doc
设置文档=新的HTMLDocument
作为字符串的Dim sText
sText=GetStringFromFile(GetFileName(“UnconfirmedRelease”))
doc.body.innerHTML=sText
设置GetEWhipersTestHtmlDoc=doc
端函数
私有函数GetFileName(testName作为字符串)作为字符串
GetFileName=ThisWorkbook.path&Application.PathSeparator&_
“收入窃窃私语测试场景”&Application.PathSeparator&testName&“.txt”
Debug.Assert Dir(GetFileName)“”
端函数
私有函数SaveHtmlStringToFile(testName为字符串,RHTML为字符串)为字符串
作为对象的Dim fso
作为对象的文件的尺寸
像细绳一样暗淡
设置fso=CreateObject(“Scripting.FileSystemObject”)
sPath=GetFileName(testName)
文件集=fso.CreateTextFile(sPath)
oFile.WriteLine.rhtml
奥菲尔,关门
端函数
**更新**
保存doc.body.outerHtml似乎是我之前的升级。可以使用“代码段”将文本转换为网页。尝试将保存的文本放回新文档时出错,但:
Err 600, Application-defined or object-defined error
Private Function GetEWhipersTestHtmlDoc() As HTMLDocument
Dim doc As New HTMLDocument
Dim sText As String
' Error Handling
On Error GoTo ErrHandler
sText = GetStringFromFile(GetFileName("UnconfirmedRelease"))
doc.body.outerHTML = sText <---- ** ERROR is Here
Set GetEWhipersTestHtmlDoc = doc
Exit Function
ErrHandler:
Select Case DspErrMsg("blah")
Case Is = vbAbort: Stop: Resume 'Debug mode - Trace
Case Is = vbRetry: Resume 'Try again
Case Is = vbIgnore: 'End routine
End Select
End Function
Err 600,应用程序定义或对象定义错误
私有函数geteWhiperTestHtmlDoc()作为HTMLDocument
Dim doc作为新的HTMLDocument
作为字符串的Dim sText
'错误处理
关于错误转到错误处理程序
sText=GetStringFromFile(GetFileName(“UnconfirmedRelease”))
doc.body.outerHTML=sText从文档正文保存HTML不会保存文档头中的任何内容:这可能包括正文正确呈现所需的脚本、样式等。试试doc.outerHTML
。@Tim Williams。谢谢你,蒂姆。请参阅更新。你能指出我为什么会出现这个错误吗?outerHtml
是一个……也许可以试试doc.Open():doc.Write(sText):doc.Close()
是的,我上次编辑时注意到的褶皱就解决了。我可以给你答案,如果你把它放在一个答案的格式。太棒了!
Dim doc As Object <--- don't let vba know we want to write to HTMLDoc
Set doc = New HTMLDocument
Dim sText As String
sText = GetStringFromFile(GetFileName("UnconfirmedRelease"))
doc.Open
doc.Write sText <-- no intellisense, but compiles...and works!
doc.Close