问题:使用 VBA 从 Web 文档输入元素中获取值

我很难从名为points的输入中检索值300

这是我的 HTML 和 VBA 代码。

HTML:

<td id="myPower_val_9" style="visibility: visible;">
    <input type="text" disabled="disabled" value="300" name="points"></input>
</td>

VBA:

Dim ie As Object
Dim myPoints As String

Set ie = CreateObject("InternetExplorer.Application")

With ie
  .Visible = 0
  .navigate "www.example.com"

   While .Busy Or .readyState <> 4 
   DoEvents
   Wend

End With

Dim Doc As HTMLDocument
Set Doc = ie.document

myPoints = Trim(Doc.getElementsByTagName("td")(0).getElementById("myPoints").innerText)
Range("A1").Value = myPoints 

解答

HTML代码

我会尝试在 Web 浏览器中编写在 javascript 中操作文档对象模型 (DOM) 的代码,以便您可以使用更好的基于 Web 的调试工具。

这里有几个问题,控制台或调试器可以帮助解决:

  • 您想要获取元素 IDmyPoints但在 HTML 中它只是称为points

  • 您想通过 ID 获取元素,但您只设置了 name 属性 -

  • 只要name是元素唯一的,就不需要先搜索一个td

  • <input></input>可以看出,输入元素没有innerText(><里面的文字)。相反,他们有一个value属性

  • 元素通过对象本身的属性公开它的属性和其他数据。因此,您只需查看.value即可检查输入的值

这是您尝试执行的操作的 javascript 示例:

var value = document.getElementsByName("points")[0].value;
console.log(value);
<input type="text" disabled="disabled" value="300" name="points" />
    

打开控制台(F12),你应该看到300

VBA

要将其转换为 Excel 的 VBA 代码,只需确保对 VB 数组使用括号()而不是对 JS 数组使用方括号[]:

myPoints = Trim(Doc.getElementsByName("points")(0).Value)

那应该工作得很好。

参考文献

由于我不确定您在 VB 中失败的时间点,因此还要确保您的 VBA 脚本中有所有正确的 Web 引用。

转到工具 > 参考 > 并添加“Microsoft HTML 对象库”和“Microsoft Internet 控件”:

参考文献

演示

我在 plunker 中创建了一个**demo **所以会有一个实时站点来代替 example.com。

将以下代码粘贴到 excel 中,一切正常:

Public Sub GetValueFromBrowser()
    Dim ie As Object
    Dim url As String
    Dim myPoints As String

    url = "http://run.plnkr.co/plunks/6UTb9kHRZ363Ivhh2BPE/"
    Set ie = CreateObject("InternetExplorer.Application")

    With ie
      .Visible = 0
      .navigate url
       While .Busy Or .readyState <> 4
         DoEvents
       Wend
    End With

    Dim Doc As HTMLDocument
    Set Doc = ie.document

    myPoints = Trim(Doc.getElementsByName("points")(0).Value)
    Range("A1").Value = myPoints

End Sub

输出:

输出

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐