设为首页收藏本站|繁體中文

Excel 技巧网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 6649|回复: 8

[Excel VBA] 如何用VBA获取IE浏览器弹出的alert窗口的提示消息

[复制链接]
发表于 2012-4-3 23:53:44 | 显示全部楼层 |阅读模式
  • 署名作者: xmyjk
  • 版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
  • 本文来自:
  • 引用作品:
  • 适用版本: 2013 2010 2007 2003以前版本 
  • 语言环境: 简体中文
  • 学习方法: 掌握Excel技巧的关键是动手操作 | 下载 ≠ 知识


  • 免费注册成为本站会员,享用更多功能,结识更多Office办公高手!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 xmyjk 于 2012-4-4 01:02 编辑

    Q:如何用VBA获取IE浏览器弹出的alert窗口的提示消息?
    如下图所示图片和网页源代码:

    如何用VBA获取IE浏览器弹出的alert窗口的提示消息

    如何用VBA获取IE浏览器弹出的alert窗口的提示消息
    1. <html>
    2. <body onload = alert("wahaaaaaaaaaaaaaaa")>
    3. 我是演示文档**
    4. </body>
    5. </html>
    复制代码
    A:思路分析:抓取网页的警告框的句柄,然后历遍其二级窗口(详情百度window窗口结构),提取文本,最后发送确认键。
    注意:如上图,我的IE的弹出警告窗的标题栏是Windows Internet Explorer(一般为Windows Internet Explorer;来自网页的消息;安全警报;安全警告等等),请按情况修改下面的代码“hWnd = FindWindowEx(0&, 0&, vbNullString, ByVal "Windows Internet Explorer")这句”。
    1. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As Any) As Long 'API抓窗口函数
    2. Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 'api取窗口文本函数

    3. Option Explicit

    4. Sub t()
    5.     Dim hWnd&, i%, AllWndText$, fhwnd&
    6.     With CreateObject("InternetExplorer.Application") '创建IE对象
    7.         .Visible = True '可视
    8.         .Navigate ThisWorkbook.Path & "\1111.html" '激活网页
    9.         Do Until .ReadyState = READYSTATE_COMPLETE '待加载完毕
    10.            DoEvents
    11.         Loop
    12.         hWnd = FindWindowEx(0&, 0&, vbNullString, ByVal "Windows Internet Explorer") '抓取弹出警告框窗口
    13.         Dim wndtext$
    14.         wndtext = Space(512) '设置提取的文本变量
    15.         fhwnd = hWnd
    16.         hWnd = FindWindowEx(fhwnd, 0&, vbNullString, 0&) '寻找母窗口下级窗口

    17.         Do While hWnd > 0 '历遍
    18.             i = GetWindowText(hWnd, wndtext, 512) '取文本
    19.             If i Then AllWndText = AllWndText & Left(wndtext, i) & "-"
    20.             hWnd = FindWindowEx(fhwnd, hWnd, vbNullString, 0&) '继续历遍下个同级窗口
    21.         Loop
    22.         [a2] = Replace(AllWndText, Chr(0), "") '输出
    23.         SendKeys "~" '关闭弹出窗口
    24.     End With
    25. End Sub
    复制代码
    注意,附件要下到硬盘加压缩运行。

    弹出消息窗截取.zip

    11.97 KB, 下载次数: 131, 下载积分: 消费券 -5 Ti币

    如何用VBA获取IE浏览器弹出的alert窗口的提示消息

    评分

    参与人数 1魅力值 +5 收起 理由
    xyf2210 + 5 技法娴熟:)

    查看全部评分

    发表于 2012-4-4 07:44:28 | 显示全部楼层
    六身投地啊
    回复 支持 反对

    使用道具 举报

    发表于 2013-11-19 09:56:13 | 显示全部楼层
    牛B
    回复

    使用道具 举报

    发表于 2014-4-16 17:36:00 | 显示全部楼层
    学习
    回复

    使用道具 举报

    发表于 2014-5-3 02:48:09 | 显示全部楼层
    看了附件,主要是用api去获取窗口句柄和标题,还是比较简单的,不用弄一个下载包的,网页的弹窗不知道到底该如何获得其中的内容呢?api或xmlhttp之类都是在绕过问题,而不是解决问题....
    回复 支持 反对

    使用道具 举报

    发表于 2017-11-29 09:28:29 | 显示全部楼层
    刚接触句柄,还未找到如何操作。特上来学习
    回复 支持 反对

    使用道具 举报

    发表于 2017-11-30 07:57:59 | 显示全部楼层
    厉害   看不懂
    回复 支持 反对

    使用道具 举报

    发表于 2018-7-9 12:58:05 来自 Excel技巧网 手机版 | 显示全部楼层
    代码运行没发现1111html什么意思?
    回复 支持 反对

    使用道具 举报

    发表于 2018-7-9 13:12:01 来自 Excel技巧网 手机版 | 显示全部楼层
    这个1111.html是什么东西?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
    本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
    若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
    会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
    本站特聘法律顾问:沈学律师

    Archiver|手机版|Excel技巧网 ( 闽ICP备08107682号-2 ) | 闽公网安备 35020302032608号  

    GMT+8, 2018-7-23 11:45

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表