【问题标题】:Navigating In IE Using Excel VBA By ID使用 Excel VBA 按 ID 在 IE 中导航
【发布时间】:2017-06-22 05:14:10
【问题描述】:

问题:尝试将信息从 Excel 复制/粘贴到网页中,然后按下按钮。最终将需要一直使用它才能将 PDF 打印到文件夹中。我尝试了下面的代码,但完全不确定为什么它不起作用。谷歌没有解决。

网址:https://www.easymapmaker.com/advanced

尝试的代码:

    Sub MapMacro()

    AddressGrid = Range("A1").Value

    Set IE = CreateObject("InternetExplorer.Application")
    WebSite = "https://www.easymapmaker.com/advanced"
    With IE
      .Visible = True
      .navigate WebSite

    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    On Error Resume Next 'This is here in case fields cant be found.

    Set Address = IE.Document.getElementsByID("sourceData")
    Address.Value = AddressGrid


    Set Element = IE.Document.getElementsByID("optionButton")
    Element.Click

    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
  End With

End Sub

【问题讨论】:

  • 当您单击按钮时,可能更容易看到作为包裹发送的内容,例如POST 或 GET 请求。无需创建 IE 资源管理器实例,您只需建立连接并发送数据,而无需所有加载 html 元素和等等等等。在 IE 中使用 F12 来监控您的流量并进行仿真?这也意味着您不必进行“等待”循环,请求会异步发送,并且当您获得有效响应时代码会继续执行。
  • 我让按钮工作了。由于 Adob​​e PDF 的要求,我需要为此使用 IE 对象。我需要在哪里复制信息的 ID 不正确?
  • 看起来不错,你试过上面那个-displayTable
  • 刚试了还是不行。认为 ID 错了,我是否正确使用操作?我取出了 getElement(s) 上的 s
  • 我认为问题出在 Address.Value = AddressGrid 行

标签: html excel internet-explorer vba


【解决方案1】:

澄清一下,我通过更改行来实现这一点:

Set Address = IE.Document.getElementsByID("sourceData")
Address.Value = AddressGrid

到:

IE.Document.getElementByID("sourceData").Value = AddressGrid

现在,由于 AddressGrid 仅引用一个单元格,但您需要一个范围,例如“A1:D4”,您可以尝试以下方法:

Dim clipTXT As MSForms.DataObject
Range("A1:D4").Copy

Set clipTXT = New MSForms.DataObject
    clipTXT.GetFromClipboard
IE.Document.getElementByID("sourceData").Value = clipTXT.GetTxt

【讨论】:

  • 尝试复制范围:Range("A1:D4").Copy,而不是使用AddressGrid,您现在可以直接从剪贴板获取数据到“sourceData”元素。我会编辑我的答案。如果有帮助请点赞!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多