次のコードを使用してWebページから一部のデータを読み取り、貼り付けをシートにしています。私はこのプロセスを同じサブで2回(すなわち、2つのウェブページについて)行う。しかし、pastespecialを2回目に使用すると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
2つのURLを切り替えてみてください。あなたのコードがコードの最初の部分でクラッシュすると、それはおそらくウェブページの違いによるものです。 (同じ場所でクラッシュする場合は、おそらくあなたのコードです。) – YowE3K
CopyTextで作成しているオブジェクトが特別な処理をしなければならないと仮定します。そのため、 'Sheet8.Range "A1")。Value = doc.body.innerHTML'? – YowE3K
range.value = htmlを使用すると、htmlコード全体が1つのセルに配置されます。私が望むのは、HTMLコードがシートに貼り付けられたときにWebページのように見えるように、Ctrl + Vを模倣することです。この方法で私は通常のExcelの戦術を使用してウェブページの様々な部分を読むことができる – dsauce