gpt4 book ai didi

html - 使用 VBA 从 Web 文档输入元素获取值

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:19 24 4
gpt4 key购买 nike

我很难从名为 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 的调试工具。

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

  • 您想获取元素 ID myPoints但在 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 控件”:

References

演示

我创建了一个 demo in plunker所以会有一个实时站点来代替 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

输出:

output

关于html - 使用 VBA 从 Web 文档输入元素获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com