2014-01-29 117 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