打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBS调用Windows API函数

那天无意中搜索到一篇《WinCC VBS利用EXCEL调用Windows API函数》的文章,不知道WinCC是什么,Google了一下好像跟西门子自动化有关。WinCC是什么并不重要,重要的是这篇文章提供了VBS调用Windows API的一种思路——EXCEL VBA,一种传说比VB还要VB的语言。

但是那篇文章中的例子都是使用已经写好的EXCEL VBA程序,即首先得存在一个EXCEL文件。我就想,能不能在VBS中通过excel.application对象创建一个包含VBA代码的EXCEL文档然后再调用它呢?Google来Google去,终于在微软帮助和支持中找到了方法。

结合两篇文章(请先阅读这两篇文章),写了一个示例程序,效果是移动鼠标至桌面左上角。如果你的EXCEL不是太盗版,双击这个VBS后应该可以看到效果。

Dim WshShellset WshShell = CreateObject("wscript.Shell")WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\AccessVBOM",1,"REG_DWORD"WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security\AccessVBOM",1,"REG_DWORD"WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security\AccessVBOM",1,"REG_DWORD"Dim oExcel, oBook, oModuleSet oExcel = CreateObject("excel.application")Set oBook = oExcel.Workbooks.AddSet oModule = obook.VBProject.VBComponents.Add(1)strCode = _"Private Declare Function SetCursorPos Lib ""user32"" (ByVal x As Long, ByVal y As Long) As Long" & vbCr & _"Sub MyMacro(x as Long, y as Long)" & vbCr & _"SetCursorPos x, y" & vbCr & _"End Sub"oModule.CodeModule.AddFromString strCodeoExcel.Run "MyMacro",0,0oExcel.DisplayAlerts = FalseoBook.CloseoExcel.Quit

前面3-5行的修改注册表是为了让VBS能够完全控制EXCEL,strCode即为写入EXCEL中的VBA代码,至于怎样在VBA中调用Windows API不属于本文的讨论范围,请自己查阅资料。使用oExcel.Run "MyMacro",0,0调用我们写入的VBA代码。

本文章由本人收集整理,转载本文章请保留本信息!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用VBA宏自动改变Excel宏安全级别设…
VBS教程(文本版)|『 脚本技术交流 』
Excel VBA(宏)精简(四)
Excel 浅谈API 与 在VBA中的调用
Excel资源分享:Excel 2016高级VBA编程宝典
Excel VBA工作薄 6.5到时会自动消失的提示窗口 不影响程序执行
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服