vba html 页面访问的宏内部文本
vba macro innertext of html page access
Option Explicit
Sub Sample()
Dim objIe As InternetExplorerMedium
Dim xobj As Variant
Dim links As Variant
Dim link As String
Dim lnk As Variant
Dim rc As Integer
Set objIe = New InternetExplorerMedium
objIe.Visible = True
objIe.navigate "C:\Users\SOURABH\Desktop\test.html"
Do While objIe.Busy And Not objIe.readyState = 4
Application.StatusBar = "Loading.."
DoEvents
Loop
MsgBox objIe.document.body.innerHTML
Set xobj = objIe.document.getElementByTagName("myDiv")
Set xobj = xobj.getElementsByClassName("myTable").Item(0)
Set xobj = xobj.getElementsByClassName("data")(0)
For Each lnk In links
MsgBox "lnk got accessed"
If lnk.className = "myTable" Then
Sheets("Sheet1").Cells(3, 1).Value = lnk(0).innerText
Exit For
End If
Next
MsgBox xobj.innerText
Set xobj = Nothing
objIe.Quit
Set objIe = Nothing
End Sub
还有我的HTML:
<div id="myDiv">
<table class="myTable">
<tbody>
<tr>
<td>Text1:</td>
<td class="data"><strong>0.51</strong></td>
</tr>
<tr>
<td>Text2:</td>
<td class="data"><strong>2199</strong></td>
</tr>
</tbody>
</table>
</div>
我可以使用 MsgBox 命令查看内部文本,但是在内部文本中获取 classname 时出现错误:
object doesn't support this property in set xobj = objIe.document.getElementByTagName("myDiv") line
请帮我想办法获取class"data"
的内文
您正在尝试通过 TAGNAME 访问它,在 MyDiv 的情况下,它是 DIV。
我想你想要的是:
Set xobj = objIe.document.getElementById("myDiv")
编辑附加问题
我试过这样做,但我在 Mac :( 如果我猜的话,我会说你应该尝试这样的事情:
For Each obj In xobj.getElementsByClassName("data")
MsgBox obj
Next
同样用调试器在MsgBox上打断,可以看到对象里面有什么
Option Explicit
Sub Sample()
Dim objIe As InternetExplorerMedium
Dim xobj As Variant
Dim links As Variant
Dim link As String
Dim lnk As Variant
Dim rc As Integer
Set objIe = New InternetExplorerMedium
objIe.Visible = True
objIe.navigate "C:\Users\SOURABH\Desktop\test.html"
Do While objIe.Busy And Not objIe.readyState = 4
Application.StatusBar = "Loading.."
DoEvents
Loop
MsgBox objIe.document.body.innerHTML
Set xobj = objIe.document.getElementByTagName("myDiv")
Set xobj = xobj.getElementsByClassName("myTable").Item(0)
Set xobj = xobj.getElementsByClassName("data")(0)
For Each lnk In links
MsgBox "lnk got accessed"
If lnk.className = "myTable" Then
Sheets("Sheet1").Cells(3, 1).Value = lnk(0).innerText
Exit For
End If
Next
MsgBox xobj.innerText
Set xobj = Nothing
objIe.Quit
Set objIe = Nothing
End Sub
还有我的HTML:
<div id="myDiv">
<table class="myTable">
<tbody>
<tr>
<td>Text1:</td>
<td class="data"><strong>0.51</strong></td>
</tr>
<tr>
<td>Text2:</td>
<td class="data"><strong>2199</strong></td>
</tr>
</tbody>
</table>
</div>
我可以使用 MsgBox 命令查看内部文本,但是在内部文本中获取 classname 时出现错误:
object doesn't support this property in set xobj = objIe.document.getElementByTagName("myDiv") line
请帮我想办法获取class"data"
的内文您正在尝试通过 TAGNAME 访问它,在 MyDiv 的情况下,它是 DIV。
我想你想要的是:
Set xobj = objIe.document.getElementById("myDiv")
编辑附加问题
我试过这样做,但我在 Mac :( 如果我猜的话,我会说你应该尝试这样的事情:
For Each obj In xobj.getElementsByClassName("data")
MsgBox obj
Next
同样用调试器在MsgBox上打断,可以看到对象里面有什么