ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: superstar星

[求助] excel vba调用DLL提示文件未找到

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-12 10:55 | 显示全部楼层
你那个程序是否核心部分被用vb6 编译成 activex dll 文件了,你的vba 程序其实是依附于那个dll 文件运行的。这是vba 代码保护的基本方式,即所谓dll 封装。
没看你的程序,这种推断的原因是wer.dll 肯定不是windows 系统带的dll 文件,所以放到system32 下一定没用。如果有这个文件,可以尝试在vbe 下引用浏览,选中该文件即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-12 20:40 | 显示全部楼层
hehex 发表于 2017-10-12 10:55
你那个程序是否核心部分被用vb6 编译成 activex dll 文件了,你的vba 程序其实是依附于那个dll 文件运行的 ...

这是VB的原程序,谢谢。

DLLvb6.0.rar

738.06 KB, 下载次数: 104

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-13 09:34 | 显示全部楼层
hehex 发表于 2017-10-12 10:55
你那个程序是否核心部分被用vb6 编译成 activex dll 文件了,你的vba 程序其实是依附于那个dll 文件运行的 ...

请老师指教

TA的精华主题

TA的得分主题

发表于 2017-10-13 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我也不是非常清楚。首先不是Activex DLL  而是普通的windows com dll, 是用c++ 写的函数。用vb6 api 方式调用的。确实,你的那个Project1.exe 在我的电脑上也是可以跑的,起码窗体显示正常。我的电脑是win 8.1 64 位企业版。
但是,我很确认我的电脑如果安装vb6.0 32 bit 版本是无法运行的,换句话说,你给我那个例子的vb6 源码与源工程,我是无法重新编译的。我试用vs 2013 去尝试解读你的vbp 与vbw 文件,无果。我们知道vb6 的编译是带有运行时环境的伪编译,换句话说还是二进制码,是一体化的编译执行而不是逐行的解释执行。而且你的那个project1.exe 只是一个窗体GUI, 按好多按钮都不响应的,我无法知道是否执行到了该段代码,是否会报错。

简单推测如下:是否这段代码无法在你电脑的当前环境下,解释执行,报运行时错误53,文件没找到。
vba 其实是vb6 的简化解释版本,上网查了一下该运行时错误的资料,也多有一些国产软件,比如用友的一些老版本在新的操作系统中出现这个问题报错。

个人解决方案提议如下:装一台win xp 或之下的虚拟机电脑或实体电脑,安装vb6.0 ,还原该项目源码,在该vb6 环境下调试运行,看看那个调用function 是否报错。 btw: 看了一下你的c++ dll 编译日期都是2008-2009年的,有年头了。

TA的精华主题

TA的得分主题

发表于 2017-10-13 11:35 | 显示全部楼层

我也不是非常清楚。首先不是Activex DLL  而是普通的windows com dll, 是用c++ 写的函数。用vb6 api 方式调用的。确实,你的那个Project1.exe 在我的电脑上也是可以跑的,起码窗体显示正常。我的电脑是win 8.1 64 位企业版。
但是,我很确认我的电脑如果安装vb6.0 32 bit 版本是无法运行的,换句话说,你给我那个例子的vb6 源码与源工程,我是无法重新编译的。我试用vs 2013 去尝试解读你的vbp 与vbw 文件,无果。我们知道vb6 的编译是带有运行时环境的wei 编译,换句话说还是二进制码,是一体化的编译执行而不是逐行的解释执行。而且你的那个project1.exe 只是一个窗体GUI, 按好多按钮都不响应的,我无法知道是否执行到了该段代码,是否会报错。

简单推测如下:是否这段代码无法在你电脑的当前环境下,解释执行,报运行时错误53,文件没找到。
vba 其实是vb6 的简化解释版本,上网查了一下该运行时错误的资料,也多有一些国产软件,比如用友的一些老版本在新的操作系统中出现这个问题报错。

个人解决方案提议如下:装一台win xp 或之下的虚拟机电脑或实体电脑,安装vb6.0 ,还原该项目源码,在该vb6 环境下调试运行,看看那个调用function 是否报错。 btw: 看了一下你的c++ dll 编译日期都是2008-2009年的,有年头了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-13 20:34 | 显示全部楼层
hehex 发表于 2017-10-13 11:35
我也不是非常清楚。首先不是Activex DLL  而是普通的windows com dll, 是用c++ 写的函数。用vb6 api 方式 ...

哦,谢谢老师啦。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-18 15:57 , Processed in 0.036340 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表