Excel浅谈API与在VBA中的调用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel浅谈API与在VBA中的调用
浅谈API 与在VBA中的调用
以前看到VBA里的P lic Declare Function 时真是头大,光照搬过来用都觉得难现在懂一点点了,特地讲出来与大家分享,共同进步!毕竟也在EXCELHOME成长了不少
我尽量将其最简单化,可能有些用词并不是很准确,但对于理解确很有帮助(如果没有代码基础的有自信也可以看哦)
我们需要理解:
1,何谓API:
得先讲动态程式库(DLL文件),DLL文件你可以把它想象成一个开机就运行的含有很多全局函数的程序(可以说DLL是windows 的基础,windows的大部分功能就是靠dll完成的)
而API 是包装在DLL文件中的函数(跟VBA写的函数没啥区别,只是语言不同),现在我们就可以把API称作为函数了,DLL文件中封装的每个函数都对外有一个接口,接口由函数名,参数表组成,像下面这个例子一样
======================================
=======================
对外输出申明 S test2(int number) “test2”就是API函数名称“(int number)”就是参数表
MsgBox(“Hello!”)
End S
======================================
========================
这个API函数作用是向调用的程序显示一个消息框,而其它的API 只是功能不一样,但结构差不多;
现在了解API的大概与原理了那就可以看怎么使用了
2,VBA中怎么调用API
VBA我们有一个通用的方法调用,这个得举例了,如下
P lic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
得先认关键字,关键字就是系统定义好的,你调用就好了,就是要记得东西,这里的关键字有
P lic Declare Function
Lib
Alias
(ByVal As String, ByVal as String)
As Long
这些关键字如果一点也不熟悉,你可以参考EXCEL VBA帮助文档,现在讲这个例子的含义
“P lic Declare Function”:
这个部分你可以记下来,“p lic” 不用我讲了全局的“Declare Function” 可以理解为定义一个函数
“FindWindow”:
随便写的自己用的函数名
“Lib "user32" Alias "FindWindowA" ”:
核心部分,涉及的东西很多,但你不用灰心,记下一个就是一个(用法都是死的),还可以去网上下一个API大全(自己下啊).“Lib "user32"” 载入user32.dll 文件,其实也可以写成“Lib "C:\WINDOWS\system32\user32.dll"”,这才是真面目(是因为环境变量里头有设定系统路径,才可写成“Lib "user32"”)。

“Alias
"FindWindowA" ” FindWindowA表示API对外的接口,也就是原始函数名。

我们给它重新定义是防止重名
(ByVal lpClassName As String, ByVal lpWindowName As String):
这个就是1中讲到的参数表了,dll文件的对外接口是兼容C语言的,VBA是基于VB的(这样说没错吧)所以在VBA中就出现了这个异样参数表了,ByVal (by val)表示传值,还有一种叫传内存地址,VBA好像不能对内存操作,我们不讨论。

“lpClassName As String”这个参数类型是对应API函数参数表,需要与API一一对应。

如果不了解API,你只需要把这个记下来就可以,真正去看API也是这样的。

多看些API就会有收获的。

相关文档
最新文档