2017-07-14 7 views
1

初めての投稿、私は本当に答えが明らかな場合は謝罪します。 VBAを使用して複数のハイパーリンクからテキストをスクラップする方法

私はいくつかの検索をした、そして、 this postを通って、いくつかのグーグルは、Excel用このVBAマクロを組み立てるために管理:

Sub GetFeats() 
    Dim SourceCell As Range 
    Dim FeatText As String 
    Dim TargetCell As Range 
    Dim appIE As Object 
    Set appIE = CreateObject("internetexplorer.application") 
    Visible = True 

    For Each SourceCell In Sheets("Sheet2").Range("A2:A3200") 
    With appIE 
     .Navigate SourceCell 
     .Visible = True 
    End With 
    Do While appIE.Busy 
     DoEvents 
    Loop 
    FeatText = appIE.document.getElementById("content") 
    For Each TargetCell In Sheets("Sheet2").Range("B2:B3200") 
    b2 = TargetCell 
    Next TargetCell 
    Next SourceCell 
End Sub 

は今、まあ、ほとんど動作しているようです。私は、Internet ExplorerがA2:A3200の範囲を走っているのを見て、各リンクを連続して開くことができます。それは空のセルになると失敗するので、セルが空の場合はセルをスキップする方法を検索する必要がありますが、自分でそれを管理できると思います。

問題は、ウェブページの「コンテンツ」が見つからないことです。 div idが機能的に同じでない場合は、tr id(私がソースとした元の投稿に使用されています)と思っています。 hereは、文脈のために「[オブジェクトHTMLDivElement]」

をB3200が、今それはちょうど貼り付け:私はVBAが正しいコンテンツを見つけるために得ることができれば、それは範囲B2に、適切にそれを貼り付けます、を考えるA2:A3200から引き出されているリンクのサンプル。

ありがとうございました。

答えて

0

ハムム、あなたは私を失ってしまった。列Aのように列にリンクがあり、列Bの次のセルのように、隣接するセルにサイトの内容全体をインポートしたいとしますか?それは尋問ですか?もしそうなら、これを試してください。

Sub Sample() 
Dim ie As Object 
Dim retStr As String 
Dim sht As Worksheet 
Dim LastRow As Long 
Dim rCell As Range 
Dim rRng As Range 

Set sht = ThisWorkbook.Worksheets("Sheet1") 

'Ctrl + Shift + End 
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

    Set ie = CreateObject("internetexplorer.application") 


    Set rRng = Sheet1.Range("A1:A" & LastRow) 

    For Each rCell In rRng.Cells 

      With ie 
       .Navigate rCell.Value 
       .Visible = True 
      End With 

      Do While ie.readystate <> 4: Wait 5: Loop 
      DoEvents 

      rCell.Offset(0, 1).Value = ie.document.body.innerText 
    Next rCell 

End Sub 

Private Sub Wait(ByVal nSec As Long) 
    nSec = nSec + Timer 
    While nSec > Timer 
     DoEvents 
    Wend 
End Sub 
+0

種類。理想的には、Webページのテキストの特定の部分だけをさまざまな列(B、C、Dなど)にコピーしたいと思いますが、 (私のために)単純にすべてのテキストのダンプを取得してから、Wordに3200行すべてをコピーしてそこにフォーマットして、小麦を籾殻から分離することができます。 私はHTMLではなく、ウェブサイトの読みやすいテキストだけを必要とします。 – rdplanglois

+0

OK、それは私が望むテキストを引っ張っていないことを除いて、VBAが素晴らしい作品です。今、私はちょうど**すべて**をページから入手しています。それはうまくいく、私はそれで動作することができます。とにかくページ内から特定のヘッダーだけを取得する...? – rdplanglois

+0

いくつかのURLを投稿してください。[OK]をクリックします。私はURLの間に共通点があると思います。完全に異なるURLが3200件ある場合、これは不可能です。 Webサイトは一般的にはカスタム設計されており、通常はそれぞれ異なるものがあります。 – ryguy72

関連する問題