Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
html文件保存从vba还原_Vba_Excel_Web Scraping - Fatal编程技术网

html文件保存从vba还原

html文件保存从vba还原,vba,excel,web-scraping,Vba,Excel,Web Scraping,我想重新使用一个web响应的快照来测试一个需要进行一些web抓取的应用程序。我试图做的只是保存响应(来自Chrome)并从文件中重新加载字符串: doc.body.innerHtml = StringFromFile 虽然这看起来像很好的html,但它不起作用。我所说的“不工作”是指在浏览web时未找到标记“表”(6)中的数据。有没有更好的方法来加载html文档 下面的代码试图将现有文档保存到文件中,然后重新使用它。这毫无价值,但也许有人会帮我澄清这一点 干杯 Private Function

我想重新使用一个web响应的快照来测试一个需要进行一些web抓取的应用程序。我试图做的只是保存响应(来自Chrome)并从文件中重新加载字符串:

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