我正在使用以下代码从网页读取一些数据,然后粘贴到工作表中。我在同一个子文件中执行了两次这样的过程(即2个网页)。但是,第二次使用pastespecial时,Excel崩溃,我不知道为什么会发生这种情况。使用PasteSpecial时Excel崩溃
Sub main()
Application.ScreenUpdating = False
Dim ie As InternetExplorer
Dim doc As HTMLDocument
Dim inputEl As HTMLInputElement
Set ie = New InternetExplorer
'open website
ie.navigate "http://...website.../page1.html"
ie.Visible = False
Sleep 5000
While ie.Busy
DoEvents
Wend
''now copying source code to excel
Set doc = ie.document
CopyText doc.body.innerHTML
Sheet3.Activate
Sheet3.Cells.Clear
Sheet3.DrawingObjects.Delete
Range("A1").Select
Range("A1").PasteSpecial xlPasteAll
'opening second page
ie.navigate "http://...website.../page2.html"
Sleep 2000
While ie.Busy
DoEvents
Wend
Set doc = ie.document
Sheet8.Activate
Sheet8.DrawingObjects.Delete
CopyText doc.body.innerHTML
Range("A1").Select
'''''Excel crashes after this point, specifically on the next line
Sheet8.Range("A1").PasteSpecial xlPasteAll
End Sub
仅供参考,我使用的功能的copytext(来自互联网借用),其定义如下:
Public Sub CopyText(Text As String)
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
MSForms_DataObject.SetText Text
MSForms_DataObject.PutInClipboard
Set MSForms_DataObject = Nothing
End Sub
我用这个也试过,但没有帮助 - pastespecial Crashing when pasting excel data
尝试切换两个URL。如果您的代码在代码的第一部分开始崩溃,则可能是由于网页的差异。 (如果它继续在同一个地方崩溃,它可能是你的代码。) – YowE3K
我假设你在CopyText中创建的对象必须做一些特别的事情,这就是为什么你不能像'Sheet8.Range “A1”)。Value = doc.body.innerHTML'? – YowE3K
如果我使用range.value = html,那么它会将整个html代码放入一个单元格中。我想要的是模仿Ctrl + V,以便当HTML代码粘贴到工作表时,它就像一个网页。这样我就可以使用通常的Excel技巧来阅读网页的各个部分 – dsauce