使用 VBA 从 Web 文档 (Intranet) 输入元素获取值

Get value from web document (intranet) input element with VBA

提问人:Grzegorz 提问时间:10/11/2023 最后编辑:tallerGrzegorz 更新时间:10/11/2023 访问量:83

问:

我无法从名为“截止日期”的输入字段中获取值

这是我的 HTML 和 VBA 代码。

我解决了错误 462,但无法检索某些数据。

实际上我收到一个错误: 运行时错误 '91: 未设置对象变量或 With 块变量

VBA:

Sub Dane_z_www()

Range("A1").Clear

Dim appIE As InternetExplorerMedium
Dim my_url As String
Dim TerminPlatnosci As String
Dim shellWins As SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer
Dim Doc As HTMLDocument

my_url = "https://example.com"
Set appIE = New InternetExplorerMedium

With appIE
.Visible = True
.Navigate my_url
End With

Set shellWins = New SHDocVw.ShellWindows

For Each IE In shellWins
    If IE.Name = "Internet Explorer" Then
        Set IEObject1 = IE
        Debug.Print IE.LocationURL
        Debug.Print IE.LocationName
End If
Next

Set shellWins = Nothing
Set IE = Nothing


Do While appIE.Busy Or appIE.ReadyState <> 4
DoEvents
Loop

Set Doc = appIE.Document

'TerminPlatnosci = Trim(Doc.getelementsByName("section-36-control$xf-771$xf-784$xml_termin_platnosci-control$xforms-input-1")(0).Value)
'TerminPlatnosci = Trim(Doc.getElementsByTagName("tr")(0).getElementsByName("input id")(0).getAttribute("value"))
TerminPlatnosci = Trim(Doc.querySelector("input[name='section-36-control$xf-771$xf-784$xml_termin_platnosci-control$xforms-input-1']").getAttribute("value"))
Range("A1").Value = TerminPlatnosci

appIE.Quit
Set appIE = Nothing

MsgBox "Daty zostały wczytane", , "Komunikat"

End Sub

HTML格式:

enter image description here

该代码提供了我在尝试下载数据时使用的三种变体。

  1. TerminPlatnosci = Trim(Doc.getelementsByName(“section-36-control$xf-771$xf-784$xml_termin_platnosci-control$xforms-input-1”)(0).值)

  2. TerminPlatnosci = Trim(Doc.getElementsByTagName(“tr”)(0).getElementsByName(“输入 id”)(0).getAttribute(“值”))

  3. TerminPlatnosci = Trim(Doc.querySelector(“input[name='section-36-control$xf-771$xf-784$xml_termin_platnosci-control$xforms-input-1']”).getAttribute(“value”))

范围(“A1”)。值 = TerminPlatnosci

Excel VBA 网页抓取 Internet-Explorer

评论

0赞 braX 10/11/2023
当你得到时,它会停在哪条线上?Object variable or With block variable not set
0赞 Grzegorz 10/11/2023
任何以 TerminPlatnosci 开头的代码
0赞 braX 10/11/2023
在使用 or 之前,将 的结果保存到变量中,以便您可以检查以确保它首先返回了某些内容。您无法从它找不到的东西中获取属性。getAttributeTrimDoc.querySelector
0赞 Grzegorz 10/11/2023
请提供这段代码以将 Doc.querySelector 的结果保存在变量中。我试图以与其他变量相同的方式定义变量,但我遇到了错误。我是 VBA 的初学者,所以这是我的要求

答: 暂无答案