2017-07-14 73 views
1

第一次交的多個超鏈接的文本,我道歉,如果答案是實際明顯。如何颳去使用VBA

我做了一些搜索,並通過this post和一些谷歌搜索,成功地組裝這VBA宏爲Excel:

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(如在原來的職位,我所使用的源自)。我認爲,如果我能得到的VBA找到正確的內容,將其粘貼正確的,在範圍B2:B3200,但現在它只是粘貼「[對象HTMLDivElement]」

爲背景,here是來自A2:A3200的其中一個鏈接的樣本。

感謝大家提前。

回答

0

Hummm,你有種失去了我。你是說你在列中有鏈接,就像列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

類。我有一個巨大的鏈接列表,在列A中。理想情況下,我想只將網頁文本的特定部分複製到各個列(B,C,D等)中,但是,我認爲它會(對我來說)簡單地獲得所有文本的轉儲,然後我可以將所有3200行復制到Word中,並在那裏重新格式化它以將小麥與糠separate分開。 我確實只想要網站的可讀文本,但不是HTML。 – rdplanglois

+0

好的,VBA工作得很好,除了:它不拉我想要的文本。現在,我只是從頁面獲得**全部**。這很好,我可以與之合作。無論如何只能從頁面中獲取特定的標題...? – rdplanglois

+0

發佈幾個網址,好的。我猜猜這些網址之間有共同之處吧。如果你有3200個完全不同的網址,這可能是不可能的。網站通常是定製設計的,每個網站通常都與其他網站大不相同。 – ryguy72