MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:11063
  • 回复:11
[经验] 转载-用DLL封装VBA
yaoxuanbin
银牌会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 3716
帖子 54
威望 11285 个
礼品券 8 个
专家指数 66
注册 2007-8-20
专业方向  网优
来自 广东
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2008-03-26 23:34:13  只看楼主  QQ
本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,而已掌握该技术的FANS们完全可以跳过本文。 先来了解一下什么是DLLDLLDynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:\Windows\System目录下。 因此,DLL文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。就象我们常在程序中用的WINDOWS API,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。也正因为此,现在许多VBA开发者在保护其代码时也多采用此法来维护其合法权益。
现在开始。假如我们要编这么一段代码:将工作表Sheet1的A1单元格的数值与B1单元格的数值相加填写到C1单元格去(嘿嘿,这是极简单的了,只是用来说明问题),在VBA模块我们可以编写这样的代码: Sub test() On Error Resume Next Dim i, j As Integer With Worksheets("Sheet1") i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With End Sub 执行上面的宏,会发现C1单元格自动会出现A1+B1的结果了。 下面我们在VB中生成包含以上宏功能的函数(子程序)的DLL文件。打开VB,“文件”-“新建工程”-“ActiveX DLL”,此时会弹出class1模块代码窗口,将如下代码写入: Sub test() On Error Resume Next Dim i, j As Integer Dim EB Set EB = GetObject(, "Excel.Application") With EB.ActiveSheet i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With Set EB = Nothing End Sub 在生成DLL之前,注意确保VB里"工程"---"引用"里"Microsoft Excel 9.0 Object Library"前面的勾已打上,再就是正确设定好DLL描述与名称。菜单“工程”----“工程属性”---“工程描述”,里面可以写上你的DLL功能名称或简介或版本号。“视图”---“属性”,设定名称为你在其他开发环境中欲使用的引用名称,如“Mytest”。好,现在点击菜单“文件”---“生成…dll”,会弹出路径与文件取名窗,按你的意思选择与输入好路径和即将生成的DLL文件名,按确定就会完成DLL的生成工作。 此时DLL已生成在你指定的目录下了,当前工程保不保存就随便你自己了,如果以后还想再编辑修改的话,当然得取个文件名保存好:)。生成的DLL如果正确的话,VBA中只要引用后就可正常调用了。
现在回到EXCEL VBA开发环境中来,先对刚生成的DLL进行一下引用。关于引用,可以手工引用,也可以用代码来做。手工引用的步骤是:在VBE窗口中,菜单“工具”---“引用”,会弹出如下窗口:

刚才生成的DLL,选择打勾确定即可。代码引用:
Shell "regsvr32 /s " & "…………..dll", vbHide
,加s参数是防止出现确认窗口,影响界面。取消引用则使用/u参数。
然后在VBA中写调用的代码: Sub DLLtest()
Dim abc As New Mytest ‘
定义abc为新类,即在DLL文件中定义的
abc.test ‘
调用DLL中提供的过程,来完成原来在VBA中的功能,起到隐藏代码的效果
Set abc = Nothing
End Sub 提供的示例中,将VBA方法与DLL调用放在了一起,便于大家进行比较。另外,DLL文件的制作远比我在这里介绍的复杂,还会涉及到类初始化、自定义属性与事件等内容,不过如果有时我们仅仅需要借助其来保护我们的VBA代码的话,掌握这部分也就足够了,呵呵。

查看积分策略说明
附件下载列表:
2008-3-26 23:34:13  下载次数: 64
DLL调用示例.rar (17.97 KB)
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 6、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 共获得 2 次点评 我要点评

    • dlutli 威望 +10 个
      · 学习,这是一个好办法 详细.. 发表与:2008-6-9 20:39:04
    • cmccmario 专家指数 +1
      · 我很赞同 详细.. 发表与:2008-5-11 18:41:44
     
    [充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
    充值拥有大量的威望和最高的下载权限,下载站内资料无忧
    yaoxuanbin
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 3716
    帖子 54
    威望 11285 个
    礼品券 8 个
    专家指数 66
    注册 2007-8-20
    专业方向  网优
    来自 广东
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-03-31 11:10:45  只看楼主  QQ
    技术问题,回答得专家指数,快速升级
    很有用的,看不懂的找我,QQ:214525732

    对本帖内容的看法? 我要点评

     
    [立即成为VIP会员,百万通信专业资料立即下载,支付宝、微信付款,简单、快速!]
    shelron
    金牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 7814
    帖子 456
    威望 33420 个
    礼品券 8 个
    专家指数 49
    注册 2006-4-29
    专业方向  通信
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-06-05 21:11:49 
    顶,支持楼主.
    顶,支持楼主.

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    alcsl
    论坛元老
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·三周年  
    积分 29369
    帖子 1244
    威望 48354 个
    礼品券 164 个
    专家指数 136
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-06-10 18:32:43 
    需要学习一下了!!!

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    fse2006
    金牌会员



     发短消息    关注Ta 

    公益·慈善勋章  
    积分 7838
    帖子 706
    威望 71 个
    礼品券 0 个
    专家指数 5
    注册 2006-11-6
    专业方向 
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-06-17 11:59:21 
    Excellent

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    CAMYP
    入门会员



     发短消息    关注Ta 

    积分 5
    帖子 1
    威望 1 个
    礼品券 0 个
    专家指数 0
    注册 2008-7-26
    专业方向  vba
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-07-26 12:32:36 

    共获得 1 次点评 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    zhangyulei2470
    钻石会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    公益·慈善勋章  
    积分 13497
    帖子 509
    威望 18391 个
    礼品券 15 个
    专家指数 289
    注册 2007-12-29
    专业方向  通信
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-08-02 11:44:32 
    下载看看那,多谢楼主了!

    对本帖内容的看法? 我要点评





    学无止境,不止学习方能不断进步!
     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    chinaren123
    银牌会员



     发短消息    关注Ta 

    公益·慈善勋章  
    积分 4627
    帖子 439
    威望 22710 个
    礼品券 5 个
    专家指数 7
    注册 2006-6-4
    专业方向  爱立信
    来自 WH
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-10-08 21:52:13 
    相当的感谢!!!!!!!!!!!!

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    xzf953
    金牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·十周年  
    积分 9431
    帖子 868
    威望 291215 个
    礼品券 5 个
    专家指数 79
    注册 2007-2-27
    专业方向  网络优化+VBA+数据库
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2008-10-09 19:54:37 
    顶下

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    unicom_fj
    VIP会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    专家·高级勋章  
    积分 158975
    帖子 19406
    威望 2321173 个
    礼品券 54 个
    专家指数 433
    注册 2006-10-27
    专业方向  IT
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2009-01-18 13:27:01 
    已经下了,谢谢!

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    GEEYI
    金牌会员



     发短消息    关注Ta 

    积分 5496
    帖子 243
    威望 13657 个
    礼品券 64 个
    专家指数 12
    注册 2008-5-5
    专业方向  信息
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2009-07-24 15:57:00 
    看不懂 哦

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    ipseno
    版主
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·八周年   纪念勋章·十周年  
    积分 6989
    帖子 873
    威望 13460 个
    礼品券 610 个
    专家指数 -75
    注册 2008-3-24
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2013-12-29 16:44:17  QQ


    QUOTE:
    原帖由 CAMYP 于 2008-7-26 12:32:36 发表

    禁止纯表情灌水

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料

    快速回复主题    
    标题 [经验] 转载-用DLL封装VBA" tabindex="1">
    内容
     上传资料请点左侧【添加附件】

    (勾选中文件为要删除文件)


    当前时区 GMT+8, 现在时间是 2024-04-27 12:08:39
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 1.111911 second(s), 44 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver