精华内容
下载资源
问答
  • VBA 调用DLL动态链接

    2015-09-06 11:14:00
    在ArcMap中引用动态链接 我在VB6下编译生成了一个动态链接文件VBAPrj.dll,其中有一类模块VBACls,...1.打开VBA编辑器,点"工具"菜单下的"引用"命令,在引用对话框中引用该动态链接调用代码如下: Dim...

    在ArcMap中引用动态链接库
           我在VB6下编译生成了一个动态链接库文件VBAPrj.dll,其中有一类模块VBACls,此类模块有一个方法Test(Doc As Object)。
            常见的方法有三种(作者:张业新):

    1.打开VBA编辑器,点"工具"菜单下的"引用"命令,在引用对话框中引用该动态链接库。
            调用代码如下:
             Dim VBACls As New VBAPrj.VBACls
             VBACls.Test(ThisDocument) 
      2.如果知道该动态链接库文件的位置,可以在ThisDocument代码窗口以代码形式引用, 代码如下:
             Private Sub Document_Open()
                       On Error Resume Next
                       Me.VBProject.References.AddFromFile "D:\VBAPrj.dll"
             End Sub
        3.将动态链接库文件拷贝到文档同一目录下,可在ThisDocument代码窗口中建立如下引用函数:
              Private Function GetProjectDoc() As Object
                     On Error Resume Next
                     Dim VBACls As Object
                     Set VBACls = CreateObject("VBAPrj.VBACls")
                     If VBACls Is Nothing Then
                  MsgBox "VBAPrj.dll必须和文档在同一目录下!"
                  Exit Function
                    End If
                    Set GetProjectDoc = VBACls
             End Function
            然后以以下代码形式调用Test:
             Dim objPrjDoc As Object
             Set objPrjDoc = GetProjectDoc
             Call objPrjDoc.Test(ThisDocument)
             Set objPrjDoc = Nothing
           使用第一种方法调试提示找不到类库,第二种方法我没试过,用了第三种方法调试成功。我也觉得第三种还是蛮好的,除了多几行代码。成功调用DLL后原来很多在VB下写的东东简单改一下就可以在VBA下用了,效率又高,保密性又好

    转载于:https://www.cnblogs.com/lbnnbs/p/4784950.html

    展开全文
  • 易语言编写的dll动态链接能够被VBA宏代码函数调用,并且作为电子表格自定义函数使用,先修订其他人的整数形,以供参考
  • DLL文件制作与在VBA调用初级进阶

    千次阅读 2008-12-26 21:37:00
    DLL文件制作与在VBA调用初级进阶■ 作者:ldhyob 日期:2004.02本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的...

    DLL文件制作与在VBA调用初级进阶

    作者:ldhyob 日期:2004.02

    本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,而已掌握该技术的FANS们完全可以跳过本文。

    先来了解一下什么是DLLDLLDynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:/Windows/System目录下。

    因此,DLL文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。就象我们常在程序中用的WINDOWS API,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。也正因为此,现在许多VBA开发者在保护其代码时也多采用此法来维护其合法权益。

    现在开始。假如我们要编这么一段代码:将工作表Sheet1A1单元格的数值与B1单元格的数值相加填写到C1单元格去(嘿嘿,这是极简单的了,只是用来说明问题),在VBA模块我们可以编写这样的代码:

    1. Sub test() 
    2.   On Error Resume Next 
    3.   Dim i, j As Integer 
    4.   With Worksheets("Sheet1"
    5.      i = .Cells(1, 1).Value 
    6.      j = .Cells(1, 2).Value 
    7.      .Cells(1, 3) = i + j 
    8.   End With 
    9. End Sub 

    执行上面的宏,会发现C1单元格自动会出现A1+B1的结果了。

    下面我们在
    VB中生成包含以上宏功能的函数(子程序)的DLL文件。打开VB,“文件”-“新建工程”-ActiveX DLL”,此时会弹出class1模块代码窗口,将如下代码写入:

    1. Sub test() 
    2.   On Error Resume Next 
    3.   Dim i, j As Integer 
    4.   Dim EB 
    5.   Set EB = GetObject(, "Excel.Application"
    6.   With EB.ActiveSheet 
    7.      i = .Cells(1, 1).Value 
    8.      j = .Cells(1, 2).Value 
    9.      .Cells(1, 3) = i + j 
    10.   End With 
    11.   Set EB = Nothing 
    12. End Sub 

    在生成DLL之前,注意确保VB"工程"---"引用""Microsoft Excel 9.0 Object Library"前面的勾已打上,再就是正确设定好DLL描述与名称。菜单“工程”----“工程属性”---“工程描述”,里面可以写上你的DLL功能名称或简介或版本号。“视图”---“属性”,设定名称为你在其他开发环境中欲使用的引用名称,如“Mytest”。好,现在点击菜单“文件”---“生成…dll”,会弹出路径与文件取名窗,按你的意思选择与输入好路径和即将生成的DLL文件名,按确定就会完成DLL的生成工作。

    此时DLL已生成在你指定的目录下了,当前工程保不保存就随便你自己了,如果以后还想再编辑修改的话,当然得取个文件名保存好:)。生成的DLL如果正确的话,VBA中只要引用后就可正常调用了

    现在回到EXCEL VBA开发环境中来,先对刚生成的DLL进行一下引用。关于引用,可以手工引用,也可以用代码来做。手工引用的步骤是:在VBE窗口中,菜单“工具”---“引用”,会弹出如下窗口:

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    浏览”到刚才生成的DLL,选择打勾确定即可。代码引用:  Shell "regsvr32 /s " & "…………..dll", vbHide,加s参数是防止出现确认窗口,影响界面。取消引用则使用/u参数。

    然后在VBA中写调用的代码:

    1. Sub DLLtest()
    2.   Dim abc As New Mytest ‘定义abc为新类,即在DLL文件中定义的
    3.   abc.test ‘调用DLL中提供的过程,来完成原来在VBA中的功能,起到隐藏代码的效果
    4.   Set abc = Nothing
    5. End Sub

    提供的示例中,将VBA方法与DLL调用放在了一起,便于大家进行比较。另外,DLL文件的制作远比我在这里介绍的复杂,还会涉及到类初始化、自定义属性与事件等内容,不过如果有时我们仅仅需要借助其来保护我们的VBA代码的话,掌握这部分也就足够了,呵呵。

    展开全文
  • 本机win7系统,调用华视读卡器正常&#...将动态库等文件拷贝到其他机器上后,一直提示 “错误453 找不到输入点CVR_INITCOMM 在termb.dll”  所需文件全都打包拷贝过去了,读卡器驱动也安装正常</p>
  • 之前在CSDN的blink发了个动态,大致意思是要认真学好VBA,以后做表什么的会方便快捷点。然后一些小伙伴就留言建议我学python,毕竟python是近两年冉冉升起的新星,VBA没有什么大的前途,学起来浪费时间。 然后昨天...

    昨天约了小姐姐吃饭,晚上在家又玩了会炉石,然后就拖更了,今早赶紧补上,惭愧惭愧。

    之前在CSDN的blink发了个动态,大致意思是要认真学好VBA,以后做表什么的会方便快捷点。然后一些小伙伴就留言建议我学python,毕竟python是近两年冉冉升起的新星,VBA没有什么大的前途,学起来浪费时间。

    然后昨天看到Python合并Excel表格的博客,我也是有点心痒痒,python是挺好的,各种库很多,那我为啥还选vba呢?仔细琢磨了一下,想到以下3个原因:

    一是目前办公室很多电脑还算比较老旧,装的系统基本都带个Office 2003
    2007啥的,因为ofice自带vbe的环境,如果后面做好了一些小程序,发给他们运行起来比较方便,不用另外安装新的环境。

    二是我认为吧,VBE毕竟是EXCEL自带的编程环境,按理说对表格的相关操作应该比python库要实现的内容更加细致吧~当然了因为对python和vba
    都不是很熟悉,所以这个以后可能会打脸。

    三是我觉得最重要,自己一个是有拖延症,一个是有选择困难症,好不容易下定决心选好了先学VBA,就认认真真学到底,毕竟半途而废的东西太多了,不管有没有用,认认真真学完也算磨练磨练自己的耐性。

    插播一下VBA学习情况。

    1. 变量命名规范:一直没有看到规范写法,自己还是选择驼峰命名法,感觉下划线 _ 敲起来不习惯;
      2.调用过程三种方法:个人感觉2,3两种应该比较常见,run在条件选择下应该比较实用,想到以前学java的过滤器,感觉有点像;
      ① addFun 5,3
      ②call addFun(5,3)
      ③run “addFun”,5,3
      3.不同模块中的sub名称可以一样,可以通过 模块.sub名称的方式调用;
      4.参数传递,按址传递:
    Option Explicit
    
    Sub demo()
        Dim n As Long
        '乘以十输出
        n = InputBox("你没个月工资多少,诚实说:")
        Call nTimesTen(n)
        MsgBox "乘10说的话,我工资一个月" & n & "块"
    End Sub
    
    Private Sub nTimesTen(m As Long)
        '传进来的参数经过计算后,不用return直接改变了原来的值
        m = m * 10
    End Sub
    

    输入4000,输出40000。

    下面加个ByVal就是按值传递,不改变传进来参数的值

    Option Explicit
    
    Sub demo()
        Dim n As Long
        '乘以十输出
        n = InputBox("你没个月工资多少,诚实说:")
        Call nTimesTen(n)
        MsgBox "诚实说的话,我工资一个月" & n & "块"
    End Sub
    
    Private Sub nTimesTen(ByVal m As Long)
        '因为加了Byval,函数运行完了扔进来啥还是啥
        m = m * 10
    End Sub
    

    输入4000,输出还是4000

    今天就暂时就到这吧。

    展开全文
  • 有些底层的东西的确java无法搞定,换思路java调用封装的动态库,windOws环境是DLL、Linux环境是SO库 恰好这两天在忙文档转换、Office文档转Pdf,Pdf文档转SWf;开始想到Linux下的OPenOffice,但通过测试发现兼容性...
    有些底层的东西的确java无法搞定,换思路java调用封装的动态库,windOws环境是DLL、Linux环境是SO库
    恰好这两天在忙文档转换、Office文档转Pdf,Pdf文档转SWf;开始想到Linux下的OPenOffice,但通过测试发现兼容性还是有问题,有些文档无法转换,那就选择WindOws环境的VBA了,这是上乘,不存在兼容性问题,但又牵出了其它问题
    转换慢可采取多开几个线程绕过;转换中出现异常弹出提示性的windOws窗体,Ok这得想法调用动态库查找窗体句柄来关闭窗体,哎, 窗体类型五花八门,这点让年轻人去做有点难、一则年轻人未听说过、或者没搞过;对我有点驾轻就熟。 哎 调用动态库有时还会把虚拟机搞崩溃,得想法优化vM参数,这是令人恼火的事情,毕竟有的第三方动态库有时也有坑。遇到此类问题哎, 大多年轻人扛不住,跟着虚拟机一起崩溃了。

    展开全文
  • 学习资源:《Excel VBA从入门到进阶》第79集 by兰色幻想一、DLL文件简述1....动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个...
  • Excel_VBA教程

    2014-09-22 11:36:34
    20使用VBA对象 66 21用对象浏览器来定位过程 67 22使用立即窗口 67 23获取立即窗口里的信息 69 24学习对象 70 25电子表格单元格操作 70 26使用RANGE属性 70 27使用CELLS属性 71 28使用OFFSET属性 71 29选择单元格...
  • 他山之石——VBA代码封装

    千次阅读 2018-07-17 22:22:08
    继续学习VBA! 话说CSDN又改版了啊,这世界天天在变化啊! ...动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的 '可执行代码位于一个 DLL 中,该 DLL 包含一个或多...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    20使用VBA对象 66 21用对象浏览器来定位过程 67 22使用立即窗口 67 23获取立即窗口里的信息 69 24学习对象 70 25电子表格单元格操作 70 26使用RANGE属性 70 27使用CELLS属性 71 28使用OFFSET属性 71 29选择单元格...
  • 第79集 VBA代码的封装 ...动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    一、VBA语言基础...................................................................................................................1 第一节标识符...........................................................
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     2.14.2 分析工具  2.14.3 数据透视表  2.14.4 Solver  2.14.5 XML特性  2.15 加载项  2.16 宏和编程  2.17 文件格式  2.18 Excel的帮助系统  第3章 公式的使用技巧  3.1 公式概述  3.2 计算公式  3.3...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
     2.14.2 分析工具  2.14.3 数据透视表  2.14.4 Solver  2.14.5 XML特性  2.15 加载项  2.16 宏和编程  2.17 文件格式  2.18 Excel的帮助系统  第3章 公式的使用技巧  3.1 公式概述  3.2 计算公式  3.3...
  • 01009获取文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度和宽度 01014获取Excel主窗口的左边界位置和顶端位置 01015获取在...
  • python脚本语言对于运维来说是非常方便的,特别是第三方,但是我的桌面应用是c#写的,所以我要考虑怎么去让c#能去调用,赋值和传参python,有两种方法,但是都有利弊,希望有更好方法的小伙伴能分享一下。...
  • VB封装DLL实例讲解

    2010-06-28 13:23:07
    一、 DLL基本概念 (一)概念 DLL即动态链接(Dynamic Link Library),是由可被其它程序调用的函数集合组成的可执行文件模块。DLL不是应用程序的组成部分,而是...二、 用VB封装VBA代码,构建自定义的DLL动态链接
  • DLL即动态链接(Dynamic Link Library),是由可被其它程序调用的函数集合组成的可执行文件模块。DLL不是应用程序的组成部分,而是运行时链接到应用程序中。用VB封装VBA代码,可以构建自定义的DLL动态链接.........
  • <!-- p {margin-bottom:0.21cm} --> ... 近日,为了进一步探究金山最新版本WPS所用的技术方向(或方案、路线等),我们特意请了一位技术高手,从金山VBA相关... 7.0(2010年发布)对应的动态连接(DLLs)。这个
  • VS+C#由程序生成QR Code

    千次阅读 2011-11-08 09:29:16
    我们公司本来生成QR Code二维码是通过调用第三方程序并结合Excel里面的VBA代码实现的,如果第三方程序出错就可能导致生成错误。 所以现在改进为由二次开发程序直接生成QR Code二维码,具体动态链接资源可以到我的...
  • 方法1:用VBS创建新对象或调用API的进行调用WINDOWS函数 方法2:用VB6的Add-in插件方法,动态创建一个工程,创建一个对象变量,运行 方法3:createobject("excel.application")方法创建一个新的Excel vba模块,...
  • VBScript循序渐进

    2009-09-06 19:24:57
     由于VBScript可以通过Windows脚本宿主调用COM,因而可以使用Windows操作系统中可以被使用的程序,比如它可以使用Microsoft Office的,尤其是使用Microsoft Access和Microsoft SQL Server的程序,当然它也...
  • 根据硬件ID和程序ID生成注册码

    热门讨论 2011-08-23 09:55:20
    一个根据硬件ID和程序ID生成注册码的动态链接DLL,可以根据计算机CPU、硬盘、网卡、BIOS生成唯一识别码。该组件不是从注册表中获得,而是直接从硬件获取信息,不需要管理员权限。支持最新的WIN7系统。适应于软件...
  • 6.2 引用类型 115 6.3 打开数据库的连接 118 6.3.1 与当前数据库连接 118 6.3.2 与另一个数据库连接 119 6.4 使用ADO创建记录集 120 6.4.1 打开简单的记录集 120 6.4.2 循环搜索和编辑记录集 122 ...
  • 15.1 理解动态链接 471 15.1.1 执行链接 471 15.1.2 内存管理 471 15.1.3 常用的DLL 471 15.2 检查API调用的语法 471 15.3 查找API的声明 474 15.4 查看可能的API调用 475 15.4.1 使用API Viewer定位调用 ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

vba调用动态库