我正在使用以下代碼從網頁讀取一些數據,然後粘貼到工作表中。我在同一個子文件中執行了兩次這樣的過程(即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