ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1273|回复: 6

[求助] 请教VBA代码怎么控制showModalDialog页面?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-7 15:05 | 显示全部楼层 |阅读模式
基础.html
<html>
<head>
<title>showModalDialog</title>
<script type="text/javascript">
function sMD(){
window.showModalDialog("弹出.html",window);
}
</script>
</head>
<body>
<input id="MD" type="button" value="showModalDialog"/>
</body>
</html>

弹出.html
<html>
<head>
<title>ModalDialog</title>
</head>
<body>
品种:<select>
<option value ="volvo">Volvo</option>
<option value ="UK">UK</option>
<option value="YORK">YORK</option>
<option value="audi">Audi</option>
</select><br>
年份:<input value=""/><br>
<input type="submit" value="提交"/>
</body>
</html>

从“基础.html”点击showModalDialog按钮,弹出“弹出.html”,此时VBA代码访问不到“弹出.html”,请教如何依次完成下面三个动作:
1、品种:选择Audi
2、年份:输入2018
3、提交:点击

用程序来控制一个网页.rar

536 Bytes, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2018-7-7 17:14 | 显示全部楼层
好险是真不行,据说vb是单线程的,好像没办法处理。反正是提交数据,要不你试试xmlhttp或者winhttp?绕过一切弹窗、网页元素,直达本源。稳定,快速

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-9 21:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-7-10 10:24 | 显示全部楼层
可以先通过弹出页面窗口的类名和标题获取窗口句柄,然后通过句柄获取网页DOM对象,之后就可以用正常方式操作了

showmodaldialog.rar

22.43 KB, 下载次数: 17

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-10 23:05 | 显示全部楼层
小fisher 发表于 2018-7-10 10:24
可以先通过弹出页面窗口的类名和标题获取窗口句柄,然后通过句柄获取网页DOM对象,之后就可以用正常方式操 ...

你好!
通过
oIE.document.getElementById("MD").Click
一句自动点击“基础.html”页面的button按钮,弹出“弹出.html”页面,然后通过
doc.getElementsByTagName("select")(0).selectedIndex = 3
doc.getElementsByTagName("input")(0).Value = "2018"
doc.getElementsByTagName("input")(1).Click
这三句完成弹窗页面内容的自动填充,整个过程完全交由程序自动完成,这正是我真实环境所需要的。
但是按照你指出的“'自动打开ModalDialog IE窗口的代码,但是从IE弹窗出现到关闭之前,VBA代码会停止运行”,是否这个过程没法自动执行?谢谢!

TA的精华主题

TA的得分主题

发表于 2018-7-11 11:00 | 显示全部楼层
Kil1 发表于 2018-7-10 23:05
你好!
通过
oIE.document.getElementById("MD").Click

如果你有权限修改“基础.html”的内容,可以考虑用showModelessDialog替换showModalDialog,如果是第三方网站,暂时还没有好的解决办法

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-13 21:10 | 显示全部楼层
小fisher 发表于 2018-7-11 11:00
如果你有权限修改“基础.html”的内容,可以考虑用showModelessDialog替换showModalDialog,如果是第三方 ...

谢谢你的代码,这两天我已放到真实场景中测试,程序能按它的本意顺畅运行,若代码能再精简些则更好,再次感谢你的分享。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-9 00:03 , Processed in 0.024158 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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