使用 VBA 通过 Access 导航网页/操作 IE

2024-05-19

你好 StackOverflow 社区,

我有一个关于使用 Access VBA 操作 IE 的问题。

本质上,我正在尝试编写代码,使用 IE 打开特定网页,在该页面中搜索特定链接(目标链接的名称将取决于用户的情况),通过以编程方式单击该链接导航到新页面链接,然后通过在生成的新页面上查找特定链接/元素来重复该过程。

最终目标链接的显示文本始终相同,但其所在的页面在每种情况下都会不同。

我的问题是以编程方式搜索第二级页面中驻留的元素...即使在浏览器加载了新链接之后,我的结果仍然只提供第一级页面中的元素。

如果到目前为止我在描述问题的背景方面做得不好,我深表歉意。

我的代码本质上如下:

Dim ie As Object, ieDoc As HTMLDocument

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True

strHTML = "http://targetsite.com/first-level_page"

ie.navigate strHTML

'wait for browser
While ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend


'define first-level target link and search for it and then "click" it

Dim i As Integer
Dim txt As String, link As String, p As String

Set ieDoc = ie.Document

txt = "First-Level Target"
    Do Until link = txt Or i >= 1000
    i = i + 1
    link = ieDoc.Links(i).outerText
Loop

'I know the above loop is not exactly ideal in its current form, but it does give me a working first attempt at the functionality I'm trying to build.    

ieDoc.Links(i).Click

到目前为止,一切都很好。上面的代码按预期工作。在所有情况下,它都能正确导航到所需的第二级页面。当我尝试在二级页面中搜索最终目标元素时,我会出错:

'wait for browser
While ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend

'Search for final target element (which always has the same name and anchor text on all second-level pages)
ieDoc.getElementsByName("final-target-name").Item.Click

如果我尝试在第一级页面上使用上面的行(基于 .getElementsByName),则效果很好。但一旦我导航到任何二级页面,它就什么也不做。我还尝试将其替换为上面搜索第一级页面上的链接的循环的修改版本。相同的结果。

作为故障排除步骤,我还用 debug.print 命令替换了该行,以简单地命名第二级页面上的所有元素,并且这始终返回第一页中的元素名称。

我认为很明显,在我点击第一个链接后,我无法正确更新或重新定义我的 HTML 文档。我已将 ieDoc 设置为空,然后将其重新设置为 ie.document,但这也不起作用。

希望有一个我根本不知道的简单命令或语法。但在我的一生中,我一直无法让 VBA 在单击第一个链接后正确引用页面上存在的 HTML 元素。

预先感谢您的任何建议!

~JQN


您需要使用@Matteo NNZ 和@TimWilliams 的组合

如果您知道元素的“id”名称,则更容易使用 getElementsByName("target")。

如果您不知道“id”,则循环锚元素并搜索正确的文本。这缩小到只有链接或元素。

Set Anchors = IeDoc.getElementsByTagName("a")

然后循环比较 .outertext 或您需要的任何子字段。

@蒂姆威廉姆斯: 您需要加载找到的 URL,然后在循环内设置新加载的 IeDoc。将“ie”对象设置为新的“ie”加载页面,否则“ie”对象将正确保留加载的第一个页面。 当您找到链接时,您需要像已经完成的那样加载新页面。

'' throw away the first page loaded.
ie = nothing 
IeDoc = nothing

'' Set the new page loaded.
ie.navigate newHTML

'wait for browser
While ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend

Set IeDoc = ie.Document

对第二页重复上述过程

以下是有关“在 vba 中解析 HTML”的一些其他资源:http://www.ozgrid.com/forum/showthread.php?t=184695 http://www.ozgrid.com/forum/showthread.php?t=184695 在 VBA 中解析 HTML 内容 https://stackoverflow.com/questions/25488687/parse-html-content-in-vba

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VBA 通过 Access 导航网页/操作 IE 的相关文章

  • 图像背景不透明度不影响边框

    如何设置背景不透明度而不影响边框线不透明度 我找到的解决方案没有帮助 div class selected img src assets img image product 1 thumbnail jpg alt product 1 thu
  • MS ACCESS 计数/求和行数,不重复

    我有下表 我需要计算总行数而不包括任何重复记录 CustomerID test1 test1 test2 test3 test4 test4 如您所见 总行数为 6 但有两个 test1 和两个 test4 我希望查询返回 4 IOW 我想
  • HTML 锚点,禁用样式

    我有一些 html 锚链接代码 与文档的其余部分不同 我希望它看起来不是链接 有没有一种简单的方法可以禁用由于将文本包装在锚标记中而引起的样式更改 而不必强行使其相同 即 如果我更改正文字体样式 我不必也更改其他一些 link东西 将颜色设
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • 矢量之间的碰撞检查 - 移动矢量 - HTML、JS、P5

    我为我的玩家创建了碰撞检查功能 每次当对象 在本例中为矢量 圆 接触玩家 也是矢量 圆 时 游戏就会结束 我已经成功创建了一个逻辑 并且有一个碰撞检查正在工作 但是它并没有计算元素之间的实际距离 而不是当它们彼此相距一定距离时实际触及其结局
  • Raphaël.js 中的剪辑路径

    我怎样才能像这样将 Clip path 与 Rapha l js 一起使用example http www simplesystems org RMagick doc ex clip path gif 看来 Raphael js 中只有 C
  • Android WebView视频关闭全屏视图后,webview自动滚动

    我在用WebView显示包含文本和视频内容的网页 它按预期正确加载和显示视频 但是当我进入视频的全屏视图时 我按照给定的方式实现了全屏视频视图here https github com akhgupta WebviewVideo 然后回到W
  • 为什么 HTML5 DOCTYPE 会扰乱我的填充?

    我有一个带有导航栏的 html5 页面 完全从头开始编码 我最近刚刚向该项目添加了一个文档类型 现在我在导航栏下获得了额外的空间 如果我删除文档类型声明 它就会恢复正常 我已经完全重置了所有内容的填充 边距等 并将其缩减为说明问题的少量代码
  • 数据透视表错误 |无效的调用或过程

    我需要一些帮助来解决这个问题 我正在尝试创建一个数据透视表 从第一季度开始 在同一张表中包含一系列数据 第一个 if 语句在那里是因为最后一列并不总是包含标题 所以我将其包含在那里 我希望范围是动态的 因为所制作的表格的大小将根据工作表中数
  • 使用 webkit 转换 Html 到 PDF

    从 Html 生成 PDF 时 webkit 转换不起作用 我需要将 div 旋转 45 度 使用 webkit 变换后 它在屏幕上看起来没问题 但使用 winnovatives Html 到 PDF 转换器时 输出是平坦的而不是旋转的 有
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • 将浮点值转换为灰度十六进制颜色值

    这个问题又快又简单 我有一个二维浮点数组 0 0000000 到 1 0000000 我想将这些数字转换为颜色值 000000 到 ffffff 请注意 我所说的只是灰度值 0 黑色 0 5 中灰色 1 白色 有谁知道如何用 javascr
  • 在Excel VBA中将图像(jpg)转换为base64?

    我需要在 Excel 中转换图像 或通过VBA 转为base64 最后我将进行XML输出 我怎样才能做到这一点 我需要引用 DOM 吗 我一直在读书这个问题 https stackoverflow com questions 169907
  • 如何在 MAMP 上显示错误?

    我有 MAMP 但我不知道如何在其上显示错误 当我的 php 代码出现错误时 它只显示空白页 我在 Google 上搜索过 我发现我必须在所有文件夹和版本上将其更改为 display errors on 并将其包含在我的页面上 错误报告 E
  • 角度按钮单击旋转图标

    我有以下按钮
  • 避免滚轮被嵌入的 youtube / flash 视频劫持

    我正在对主页中嵌入 YouTube 视频的网站进行一些改进 我自己没有添加此代码 但它看起来像
  • 如何在C#中使用默认浏览器打开带有锚点(#)的html文件

    我正在尝试在 C 中打开上下文帮助文件 当我没有指定锚点时 它工作得很好 Process Start C Help Help htm 但是当我指定锚点时 它不会打开 Process Start C Help Help htm Toc3420
  • JavaFX:在 WebView img 标签中未加载本地图像

    以下是我的代码 一切安好 我可以加载远程页面 我可以放置 HTML 内容 但我的img标签显示一个X标志表示无法加载图像 Note 我的图像与类位于同一个包中JavaFX在 Smiley 文件夹中 我可以列出所有图像 这意味着路径没有问题
  • 当CSS文件存在时,无法在服务器上找到它们[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 当运行本地服务器时 这一切都运行良好 我有 header html 其中包含以下代码 在 public html 目录 与 header h
  • 使用 Jsoup 选择没有类的 HTML 元素

    考虑一个像这样的 html 文档 div p p p p p class random class name p div 我们怎样才能选择所有p元素 但不包括p元素与random class name class Elements ps b

随机推荐

  • ListItem 附加自定义值

    我在asp net中使用dropdownlist 它有代表下拉列表项目的ListItem集合 每个ListItem只有两个字段来保存数据 Value和Text字段 但这些还不够 我想保存更多数据对于每个项目 假设附加字段中有 Text1 和
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Excel 2013 数据透视表不会更改当前页面,除非手动导航到

    我们有一小段 VBA 代码 多年来一直完美运行 本质上是 Me PivotTables APivot PivotFields AField CurrentPage Some text 这种方法一直有效 直到 Excel 2013 该行将失败
  • 将带有星号的注册表项传递给测试路径

    我想通过以下方式运行此注册表路径Test Path在 PowerShell 中 但它包含一个星号 该星号在注册表中有效 但在 Windows 路径中无效 问题是 当我通过它时 Test Path将星号视为通配符 因此这需要非常非常长的时间
  • 如何从 Magento One Page Checkout 获取发布数据?

    为了在 Magento Checkout 中添加客户评论字段 我在相应的模板文件中添加了一个文本字段 并使用如下观察器将评论添加到订单中 comment strip tags Mage app gt getRequest gt getPar
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • 多边形内的 SQL 地理点在 STIntersect 上不返回 true(但使用 Geometry 返回 true)

    我不想仅仅为了在 STIntersect 中返回 true 而将地理数据转换为几何图形 下面是 SQL 中的代码 DECLARE point GEOGRAPHY GEOGRAPHY Point 1 1 4326 DECLARE polygo
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它
  • 如何更改 aptana studio 的背景颜色?

    如何将 Aptana IDE 或整个主题 的黑色背景更改为其他背景 例如蓝色 正如 gyozo 在评论中提到的 对于蓝色主题 请使用 窗口 gt 首选项 gt Aptana Studio gt 主题 并选择 Eclipse 主题
  • 如何获得 JavaScript 阶乘程序的循环来显示所使用的工作?

    你好 我面临着用 JavaScript 编写一个程序的挑战 尽管我对它不太了解 但它要求用户输入一个数字 然后计算该数字的阶乘 我使用了已经提出的问题并设法使计算正常工作 但无法获得所需的输出 我必须在以下输出中获取它 而不使用任何花哨的库
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class
  • 我可以将 MongoDB 与实体框架一起使用吗?

    实体框架有可能支持MongoDB数据库吗 有人写过实体框架MongoDB Provider吗 简短的回答 不 这肯定是可能的 但不合理 MongoDB 是文档数据库 不支持集合之间的任何物理关系 EF 非常适合 SQL MySQL 等关系数
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA
  • 使用 VBA 通过 Access 导航网页/操作 IE

    你好 StackOverflow 社区 我有一个关于使用 Access VBA 操作 IE 的问题 本质上 我正在尝试编写代码 使用 IE 打开特定网页 在该页面中搜索特定链接 目标链接的名称将取决于用户的情况 通过以编程方式单击该链接导航