首页 > 其他分享 >用VB6.0封装DLL组件并在EXCEL中调用

用VB6.0封装DLL组件并在EXCEL中调用

时间:2024-02-03 17:57:16浏览次数:22  
标签:文件 Sub EXCEL DLL VB6.0 引用 Microsoft

使用程序:

1、Microsoft Office Excel 2003

2、Microsoft Visual Basic 6.0

 

案例:在工作表的C1单元格得出A1单元格+B1单元格的值。

设计的VBA代码:

Sub Test()

    On Error Resume Next

    Range("C1") = Cells(1, 1) + Cells(1, 2)

End Sub 

 

第一部分、使用VB6.0制作DLL文件

 

一、  启动VB6.0,新建一个ActiveX DLL工程:

 

 

二、  引用:在VB中对Excel的引用

 

 不同版本的EXCEL在“引用”窗口里显示的版本号也不同:

EXCEL2000(Microsoft Office 9.0)

EXCEL2002(Microsoft Office 10.0),即ExcelXP

EXCEL2003(Microsoft Office 11.0)

EXCEL2007(Microsoft Office 12.0)

EXCEL2010(Microsoft Office 14.0)

EXCEL2013(Microsoft Office 15.0)

 

三、  修改ActiveX DLL的工程名称和类模块名称

 

 

四、编写代码:

在代码窗口输入代码,过程名称为Test:

Sub Test()

    On Error Resume Next

    Dim VBt, YB    '定义变量VBt

    Set VBt = GetObject(, "Excel.Application")    '使VBt表示为EXCEL对象

    Set YB = VBt.ActiveSheet    '使YB表示为EXCEL的当前工作表

 

    '注意要在对象前加上YB变量以表示是EXCEL当前工作表的对象

    YB. Range("C1")  = YB.Cells(1, 1).Value + YB.Cells(1, 2).Value

End Sub

 

五、设置工程属性 (为使开发的程序更规范,可以对工程属性加以描述【非必要设置,可以省略】):

 

 

六、保存工程、测试、生成DLL文件:

1、保存工程:保存本工程以作为将来修改代码和升级程序的需要;

2、测试工程:执行快捷工具栏上的“启动”按钮,检查是否存在错误;

3、生成DLL文件:制作DLL文件。

  

第二部分、调用DLL文件

 

一、在VBE中调用DLL文件

调用DLL文件,要分两步走:先注册DLL,再引用DLL。

1、 注册DLL(使之放在可引用的列表上):
注册DLL也可以使用代码来做,但那样比较复杂,也存在很多问题,建议一般使用手工来注册。

(这里应该先设计好DLL文件放在硬盘的位置,因为后面引用DLL文件的代码也应该是指向这个位置的。)  

先打开EXCEL,再打开“Visual Basic 编辑器”

 

 

2、引用DLL(这样每次打开打开文件时,就不必再去那个引用列表里打个勾了)

①DLL文件放在与EXCEL文件同一个文件夹内

在ThisWorkbook中添加如下代码:

Private Sub Workbook_Open() '打开文件时加载要引用的DLL文件 shell "Regsvr32 /s " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean)'关闭文件之前卸载引用的DLL文件 shell "Regsvr32 /s /u " & Chr(34) & ThisWorkBook.path & "\VBADLL.dll"& Chr(34) End Sub

'/s参数是防止出现确认窗口;/u参数为取消引用。

 

②DLL文件放在固定文件夹内,如果你有多个XLS文档需要使用到同一个DLL文件,但这些XLS文档又不可能都与DLL文件放在同一个文件夹,则需要将DLL文件放置到一个固定文件夹,这样,只需要将上面的代码 ThisWorkBook.path & "\VBADLL.dll" 换成一个固定位置即可。

 

注意:有时间可能出现某些错误,如提示“变量类型未定义”等,可能是引用后改变了文件的位置或改变了文件的名称,即使再重新再改回来也可能会出现这些问题,所以,在正确注册及引用以后,最好不要再去修改这个DLL文件。如果出现问题,重新注册一次,保证注册的DLL文件的位置正确即可。

 


 

二、新建一个模块,输入调用DLL文件程序的过程:

Sub DLLtest()

    Dim ABC As New VBAtest      '定义ABC为新类,即为DLL文件中的类模块VBAtest

    ABC.Test    '调用DLL中提供的过程,来完成原来在VBA中的功能,起到隐藏代码的效果

    Set ABC = Nothing   '释放类资源

End Sub

 

 

三、在工作表中运行DLLtest宏即可实现调用:

  也可以在VBA中直接运行F5,查看结果如下:

 

综上所述,感觉封装DLL的主要步骤是:
①在VB中引用EXCEL;
②编辑代码(要在对象前面加上定义的EXCEL变量);
③在VBE中引用该DLL文件;

④在VBE的代码中调用DLL中的过程。 

标签:文件,Sub,EXCEL,DLL,VB6.0,引用,Microsoft
From: https://www.cnblogs.com/adam012019/p/18005002

相关文章

  • C# NPOI reflection import data into excel file
    usingSystem.ComponentModel.DataAnnotations;usingSystem.Diagnostics;usingSystem.Runtime.CompilerServices;usingSystem.Security.Cryptography;usingSystem.Text;usingNewtonsoft.Json;usingSystem.Reflection;usingNPOI.SS.Formula.Functions;usingNPO......
  • excel常见错误类型
    类型一:####错误原因:一般情况下单元格的宽度放不下所有的内容,也有可能是在日期格式列中输入负数的日期或者时间。解决方案:拉大列宽,修改格式为常规。类型二:DIV/0!错误原因:数据相除运算中除数(分母)为0或者为空格解决方案:查看除数是否出现0的情况是否合理,不合理就需要重新计算,合理......
  • Java实现学生信息管理系统:从Excel中提取数据的实用方法
    在Java中实现学生信息管理系统并从Excel中读取数据,通常适用于以下场景:数据迁移和集成:如果你有一个现存的学生信息管理系统,该系统可能使用数据库或其他存储方式,但你想将这些数据迁移到新的系统。Excel文件可能提供了一种方便的方式来迁移这些数据,因为Excel文件格式易于查看和编辑。......
  • excel学习记录
    《相关案例详见博客园文件》1.记录整理、数据计算、数据分析、数据展现2.保存->工具->常规选项->设置打开密码和修改权限密码,修改权限密码表示可以修改,但是修改后不能保存3.快速填充ctrl+e:对数据拆分、重组、合并 例如:A列有邮箱数据,想提取出邮箱数据中的人名,在B列输入A1中的......
  • 安装MySQL出现由于找不到vcruntime140_1.dll,无法继续执行代码的提示
    问题描述:在安装MySQL服务的时候,执行安装命令提示如下的错误信息。解决方法:通过分析可以知道,是由于缺少了vcruntime140_1.dll动态链接库文件,这是windows缺少vc_redist.x64.exe程序导致的服务安装错误,与我们要安装的MySQL服务并没有关系。(如果您的安装过VS类型的工具,就不会提示该......
  • EasyExcel 读取单元格内图片
    EasyExcel读取单元格内图片1.需求介绍需要实现Excel数据批量导入,且Excel中某个单元格内存在图片,需要将图片解析上传,并与所在行数据进行绑定,具体数据如:2.具体实现2.1版本介绍easyexcel:3.3.2SpringBoot:2.7.1hutool:5.7.212.2解决思路参考hutoolExcelPicUtil工具类,通......
  • js处理excel数据
    借助xlsx实现js读取处理excel数据,并输出excel文件<inputtype="file"@change="fn"/>import*asXLSXfrom'xlsx'fn(e){letfileObj=e.target.files[0]constfileReader=newFileReader()fileReader.readAsArrayBuffer(fileObj)fileR......
  • 关于pycharm报错:Original error was: DLL load failed while importing _multiarray_u
    前提:遇到该问题时,已重新卸载并安装numpy,但由于今日重新打开pycharm,运行相同的代码,又再次报错,故重新寻找了新的方式进行尝试。原文地址解决方法:Step1:点击run,找到EditConfigurationsStep2:在EnvironmentVariables后加入:Path=Anaconda根目录\Library\bin......
  • 全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用
    前言我们之前跑了一个yolo的模型,然后我们通过PaddleDetection的库对这个模型进行了一定程度的调用,但是那个调用还是基于命令的调用,这样的库首先第一个不能部署到客户的电脑上,第二个用起来也非常不方便,那么我们可不可以直接将Paddle的库直接做成一个DLL部署到我们的软件上呢?答案是......
  • 盘点一个Excel数据分割和explode()实战问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【JethroShen】问了一个Pandas数据处理的问题。问题如下:各位大佬这种情况我怎么处理一下啊?标记的商品内容后后面的数量是一一对应的想把它们铺开。下面是他自己写的代码:jigou_df=pd.read_excel(jigou_path)data={'商......