ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] webview2控件及基本使用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-10 19:28 | 显示全部楼层 |阅读模式
本帖最后由 fxl447098457 于 2024-5-1 15:12 编辑

写了一个webview2的ocx控件.控件注册后即可用,没有什么限制。电脑上需要装有webview2 runtime。既支持在窗体中拖控件显示网页也支持createobject后期调用执行脚本。在wps后期调用没问题(窗体拖拽有问题)。office EXCEL 32/64位下测试都过关,有问题再报。附件里也带了简单的示例和文字说明。我主要用来跑些页面和方便执行一些脚本。所以没有加入很多属性方法。
2024-05-01更新:修复窗体引用出现的问题.(wps在窗体下无法识别控件,暂时放弃了。但wps可以createobject使用webview2)
2024-04-14更新:修改向窗体下拖拉控件出现runtime overflow错误。
2024-04-12更新:增加webview2进程释放CloseBrowserProcess方法,附件里的demo做了一点更新说明.
说明:'窗体下会保留一个webview2(主进程和几个线程)的进程,重复执行不会增加额外线程。所有进程会随着excel工作簿退出而释放。而在模块里面不创建可视化窗体的过程则不存在这种情况,所有进程会完全释放。(wps下测试)
Webview2Ctr.7z (552.79 KB, 下载次数: 72)
附上一张wps excel里面的窗体图:
1.jpg



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-11 08:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢分享,学习学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-27 13:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
发个webview2的用法。前段时间不是有人要计算18的1000次方。js里面已经引入了BigInt数据类型,主要用于表示任意长度的整数。创建BigInt有两种方式:
1.在一个整数字面量后面添加一个字母n,如3141592653n。
2.使用BigInt()函数将普通整数值转换为BigInt类型,如BigInt(3141592653)。
现在我们用大整数类型来计算下18的1000次方结果:
Sub 大数求幂()
   Dim xx As Object
    Set xx = CreateObject("edge.LibWebview")
    Do While Not xx.webviewready
    DoEvents
    Loop
    xx.ExecScript ("let bigInt1=18n;let bigInt2=1000n;let result=(bigInt1**bigInt2).toString();")
    CreateObject("wscript.shell").popup xx.jsProp("result"), , "18的1000次方计算结果:"
     xx.CloseBrowserProcess
    Set xx = Nothing
End Sub
运行结果:
4.jpg

还有vbscript里的正则表达式不支持正向后行断言(?<=),但现在的js是没有问题的。
Sub 正则()
   Dim xx As Object, s$
   s = "我们12abc"
    Set xx = CreateObject("edge.LibWebview")
    Do While Not xx.webviewready
    DoEvents
    Loop
    xx.ExecScript ("let a=/(?<=们)\d+/.exec('" & s & "'),b=a.join();")
     CreateObject("wscript.shell").popup xx.jsProp("b"), , "正则提取结果:"
     xx.CloseBrowserProcess
    Set xx = Nothing
End Sub
记住这是个浏览器控件,有document/window,可玩性很高。当然还有借助第三方js库,让这个控件的作用更有发挥的空间。这个我就不展开讲了,自由发挥。以后想到了我再回头补充。

TA的精华主题

TA的得分主题

发表于 2024-4-27 18:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错,学习了。谢谢

TA的精华主题

TA的得分主题

发表于 2024-4-27 19:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-30 08:59 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-30 09:40 | 显示全部楼层

32位还是64位的office?64位我还没测试过。是测试我发过的代码出现的问题么?
电脑安装了webview2 runtime么? 如果是win7/win8最多需要安装109版本的runtime。win10及以上系统可以安装最新版本。

TA的精华主题

TA的得分主题

发表于 2024-4-30 14:12 | 显示全部楼层
fxl447098457 发表于 2024-4-30 09:40
32位还是64位的office?64位我还没测试过。是测试我发过的代码出现的问题么?
电脑安装了webview2 runti ...

win10,32位office2010,安装了webview2 runtime

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-30 16:12 | 显示全部楼层
lt0314 发表于 2024-4-30 14:12
win10,32位office2010,安装了webview2 runtime

我重新编译了一遍,你在下载试试看。我亲自在32位office 2016和vb6里面都进行了测试,都顺利通过。

TA的精华主题

TA的得分主题

发表于 2024-4-30 16:31 | 显示全部楼层
0.png
还是不行,一直loop,点击监视窗口中的xx,也不能访问,是不是office2010版本低了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 02:49 , Processed in 0.049136 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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