Я использую следующий код, чтобы прочитать некоторые данные с веб-страницы, а затем вставить в лист. Я делаю этот процесс дважды (т. Е. Для 2 веб-страниц) в том же подпункте. Однако при использовании pastespecial во второй раз Excel падает, и я понятия не имею, почему это происходит.Excel сбой при использовании PasteSpecial
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»). Значение = doc.body.innerHTML'? – YowE3K
Если я использую range.value = html, тогда он поместит весь код html в одну ячейку. я хочу подражать ctrl + v, чтобы при вставке html-кода в лист он выглядел как веб-страница. таким образом, я смогу использовать обычную тактику excel для чтения различных частей веб-страницы. – dsauce