VBA中的Writeline因文本过长而中断
我正在自动提取网页,并将内容写入文本(HTML)文件 为此,我设置了这样一个文件系统对象VBA中的Writeline因文本过长而中断,vba,fso,Vba,Fso,我正在自动提取网页,并将内容写入文本(HTML)文件 为此,我设置了这样一个文件系统对象 Dim myHTMLfilepath As String myHTMLfilepath = "C:\temp\MyFile.html" Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim myHTMLFile As Object Set myHTMLFile = fso.createtextfile(myHT
Dim myHTMLfilepath As String
myHTMLfilepath = "C:\temp\MyFile.html"
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim myHTMLFile As Object
Set myHTMLFile = fso.createtextfile(myHTMLfilepath)
当我尝试将提取的内容写入文件时,有时会出现错误5(无效参数)。以下是密码:
myHTMLFile.writeline objIE.document.getElementsByClassName("cool-box")(0).innerHTML
当innerHTML的长度介于25800和28000之间时,它就会中断(我还没有计算出确切的限制)
是否有人知道是否可以增加WriteLine限制,或者建议使用不同的方法执行此操作?假设可以成功地将
.innerHTML
读入字符串(拆分读/写以找到答案),您应该能够使用ADODB.Stream
将其写入文件WriteLine
用于将一行文本写入文件,而不是整个文档
Dim contents As String
contents = objIE.document.getElementsByClassName("cool-box")(0).innerHTML
With CreateObject("ADODB.Stream")
.Open
.Type = 1
.Write contents
.SaveToFile myHTMLfilepath, 2
.Close
End With
你可以拆分你的字符串并为每一个换行符添加
Chr(10)
你可以添加链接以进行测试吗?@Mikku不幸的是,这是一个私人网站。@Camille我曾想过这样做,但希望有一个更干净的解决方案。你的“读”和“写”都发生在同一条指令中,因此,很难判断问题是在于读取.innerHTML
还是写入myHTMLFile
。将它拆分,并考虑将字符串流到文件中,而不是一次从内存中写入它。写作无疑是问题所在。我的调试在innerHTML中显示内容,len()显示的值的顺序为29k。我会尝试一下,并让您知道。@Fabrico注意到,作为奖励,如果适用,此方法还支持unicode编码。是的,我知道。。。这是适用的。几年前我用过这个方法,但后来忘了。实际上,我刚刚恢复了我的旧代码,它与您的代码非常匹配,所以…:-)我只希望在转储到文件之前,它至少能保存30MB的文本。我正在将几个thounsand页面的内容收集到一个文件中…:-)