分享

Excel 浅谈API 与 在VBA中的调用

 星之明光 2011-08-30

浅谈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就会有收获的

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多