2014-01-29 64 views
0

我試圖從網頁中拉一張桌子,到目前爲止我成功地從網頁中拉出一張桌子,不幸的是我在表格的每一行中都有一些鏈接,當我從網頁中拉出桌子時,我得到的輸出沒有鏈接,只是文本,有沒有什麼辦法可以使用VBA包括超鏈接從網頁拉表。使用VBA從網頁到Excel的數據提取

這裏是我的代碼:

Sub TableExample() 
Dim IE As Object 
Dim doc As Object 
Dim strURL As String 

strURL = "HERE I USED MY URL" 
' replace with URL of your choice 

Set IE = CreateObject("InternetExplorer.Application") 
With IE 
'.Visible = True 

.Navigate strURL 
Do Until .readyState = 4: DoEvents: Loop 
Do While .Busy: DoEvents: Loop 
Set doc = IE.Document 
GetAllTables doc 

.Quit 
End With 
End Sub 

Sub GetAllTables(doc As Object) 

' get all the tables from a webpage document, doc, and put them in a new worksheet 

Dim ws As Worksheet 
Dim rng As Range 
Dim tbl As Object 
Dim rw As Object 
Dim cl As Object 
Dim tabno As Long 
Dim nextrow As Long 
Dim I As Long 

Set ws = Worksheets.Add 

For Each tbl In doc.getElementsByTagName("TABLE") 
tabno = tabno + 1 
nextrow = nextrow + 1 
Set rng = ws.Range("B" & nextrow) 
rng.Offset(, -1) = "Table " & tabno 
For Each rw In tbl.Rows 
For Each cl In rw.Cells 
rng.Value = cl.outerText 
Set rng = rng.Offset(, 1) 
I = I + 1 
Next cl 
nextrow = nextrow + 1 
Set rng = rng.Offset(1, -I) 
I = 0 
Next rw 
Next tbl 

ws.Cells.ClearFormats 

End Sub 

回答

1

當你執行 「rng.Value = cl.outerText」 你只有文字。如果您需要擁有所有鏈接和其他html,請使用innerHTML屬性。

只需將「rng.Value = cl.outerText」替換爲「rng.Value = cl.innerHTML」即可。這將返回整個HTML與鏈接;)

+1

感謝您的答覆,我用你所說的,但它顯示爲「1145」如果它顯示爲「超鏈接到該網頁的超鏈接」1145將是巨大的。 – user3248817

+0

這不可能在一個excel單元中有多個鏈接。但是,如果您只需要爲每個單元格存儲第一個鏈接,則可以使用腳步從網頁中提取文本,然後在命令「rng.Value = cl.outerText」中使用以下步驟添加鏈接到此單元格: 1)get html使用innerHTML屬性到某個變量 2)在href =(可以有單引號或雙引號)之後得到引號之間的子串3)添加超鏈接ws.Hyperlinks.Add錨點:= rng,地址:= YourVariableWithSubstring – AntonKolesnikov

+0

對不起,if我解釋錯誤,目前在一個單元格114‌​5,但我希望該單元格爲「1145」,但必須鏈接到「雷森 - 海雲-2/1145/exklusive-kreuzfahrten-sea-cloud-2-reise」。 html「 – user3248817