VB6编写的程序在win7下不能运行,个别的win10下运行也出错,求指点!!!

weixin_41873780 2018-07-04 08:15:51
各位前辈,版主好。
本人在win10 64位家庭版用VB6编的程序在win7上运行不了,在一个同事的win10上也运行不了,具体如下:
本人系统平台如下:win10家庭版,office 2013
1)我的程序在VB6平台上编写,调用调用excel在用户窗体上输入数据,并保存为excel 的xls格式文件及制表符分隔的.txt文件。
2)在setup factory 9.1下打安装包,在大部份的win10下正常安装运行,但在一个同事的win10家庭版及excel 2010上安装正常,但运行时打不开我指定的excel文件模板,返回错误号为:-2147021892 ,程序代码如下:On Error Resume Next Set ExlWorkBook = Exlapp.Workbooks.Open(App.Path & "\Spec_Upld_Template.xls")
3)在win7正安装正常,运行时提“未预期错误”。
跪求大神指点,感谢,感谢,感谢!
...全文
2727 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
clear_zero 2018-09-15
  • 打赏
  • 举报
回复
把Win7调整到classic mode可以试试看
hpygzhx520 2018-08-12
  • 打赏
  • 举报
回复
图标不兼容也会出现这个问题?算是见识了。我还以为是管理员权限问题呢
weixin_41873780 2018-08-03
  • 打赏
  • 举报
回复 1
各位好,本程序在win7平台运行提示“未预期错误"问题已解决,问题归咎为程序图标不兼容,把图标做为24位真彩后编译,打包,安装,在win7下运行正常了。谢谢各位。
章宏 2018-07-31
  • 打赏
  • 举报
回复
我都是在XP+Excel2003 环境下编译的,到win7时,最不济还可选择 以XP兼容模式运行
milaoshu1020 2018-07-18
  • 打赏
  • 举报
回复
win7的未预期错误有错误代码么?
ruan1978 2018-07-18
  • 打赏
  • 举报
回复
vb6在win7上跑因为兼容性问题吧!
weixin_41873780 2018-07-07
  • 打赏
  • 举报
回复
我在一个论坛上看到有其它的前辈说VB程序在win7上运行提示“未预期错误”问题是由于程序图标不兼容32位的图标,可有此事?我理解不了如此问题!!!
weixin_41873780 2018-07-06
  • 打赏
  • 举报
回复
各位前辈,我的程序在个别win10打不开Spec_upld_Template.xls模板问题已解决,是因为同事的excel2010打开此模板提示模板视图受保护(我的这个模板是加密保护的,防止更改),在打开打模板后确认打开后,再次在excel打开此模板就没有提示视图受保护了,再在程序导入就正常了。谢谢各位的思路指引。感谢。但win7运行不了问题还在。
舉杯邀明月 2018-07-05
  • 打赏
  • 举报
回复
引用 4 楼 chewinggum 的回复:
因为你基于2013的环境编译,于是编译后的东西调用2010出错了。
你要基于2010的环境编译。然后再调用2013就稳了

我觉得不是这么回事。


以前我以为用“静态库”程序,不同版本的“excel对象”可能会有问题。
不过前段时间我试了一下(静态引用tlb,测试Excel对象进程是否能正常创建):
WinXP+2003 编译的程序,在Win 7 + 2007运行正常;
Win 7 +2007 编译的程序,以WinXP + 2003下也同样正常。
既然Excel对象进程成功创建了,其它操作基本没什么问题了,
 在我的程序中,主要就是读、写Excel文档数据,基本没有搞什么图表、Shaps对象之类的。
 不过,还是觉得,即使要搞这些操作,问题也应该不大,重点还是进程对象能否创建、启动这儿。

别的我也不想多说了,反正这些,楼主都是无视的。
脆皮大雪糕 2018-07-05
  • 打赏
  • 举报
回复
因为你基于2013的环境编译,于是编译后的东西调用2010出错了。
你要基于2010的环境编译。然后再调用2013就稳了
笨狗先飞 2018-07-05
  • 打赏
  • 举报
回复
On Error Resume Next
之后还报错,应该已经是程序的第二个错误了
看起来这个错误像是版本问题,
建议不要静态引用,改用CreateObject动态创建对象试试
of123 2018-07-05
  • 打赏
  • 举报
回复
试试不直接调用 Excel 组件,而是用 Jet Engine 将 Excel 文件作为外部数据库来处理。
脆皮大雪糕 2018-07-05
  • 打赏
  • 举报
回复 1
引用 5 楼 Chen8013 的回复:
[quote=引用 4 楼 chewinggum 的回复:]
因为你基于2013的环境编译,于是编译后的东西调用2010出错了。
你要基于2010的环境编译。然后再调用2013就稳了

我觉得不是这么回事。


以前我以为用“静态库”程序,不同版本的“excel对象”可能会有问题。
不过前段时间我试了一下(静态引用tlb,测试Excel对象进程是否能正常创建):
WinXP+2003 编译的程序,在Win 7 + 2007运行正常;
Win 7 +2007 编译的程序,以WinXP + 2003下也同样正常。
既然Excel对象进程成功创建了,其它操作基本没什么问题了,
 在我的程序中,主要就是读、写Excel文档数据,基本没有搞什么图表、Shaps对象之类的。
 不过,还是觉得,即使要搞这些操作,问题也应该不大,重点还是进程对象能否创建、启动这儿。

别的我也不想多说了,反正这些,楼主都是无视的。
[/quote]

不一定的,关键看调用的函数或方法是否兼容。
比如一个 activex dll 1.0版本里面有一个原型为 test( a as string) as long 的函数。在2.0版本里这个函数改为 test( a as string, optional b as string) as long并且项目做了二进制兼容

那么引用了1.0版本的代码编译出来的exe放在注册了2.0版本的电脑上,一切正常。
引用2.0版本编译出来的,在注册1.0版本的机器上,创建对象不会出错,但一旦调用这个test就会出问题,即使只传一个参数。
这种兼容问题曾经困扰我们公司很久,编译一不小心就会出问题。后来专门写了个程序来检查所有com组件的兼容性。
weixin_41873780 2018-07-05
  • 打赏
  • 举报
回复
我是用CreateObject, 如下: Private Sub Form_Load() '本应用启动加载内容 'On Error Resume Next Set Exlapp = CreateObject("Excel.Application") '新建Excel应用进程 'Set Exlapp = New excel.Application welcome.inisms.Caption = "正在检测Micosoft Excel Application 是否安装..." If Err Then MsgBox "检测到本机尚未安装或未正确安装 Micosoft Excel Application! 程序不能断续运行!" & Chr(13) & "错误代码:" & Err Err.Clear Unload welcome End End If welcome.inisms.Caption = "正在加载Florens Datasheet 模板..." Exlapp.DisplayAlerts = False '关闭Excel所有警告 'On Error Resume Next Set ExlWorkBook = Exlapp.Workbooks.Open(App.Path & "\Spec_Upld_Template.xls") '打开本应用路径下的Florens Upload File 模板 If Err Then MsgBox "在本程序路径下未找到 Spec_Upld_Template.xls 模板,系统不能初始化!即将终止运行!" & Chr(13) & "错误代码:" & Err Err.Clear If welcome.Visible Then Unload welcome ExlWorkBook.Close Exlapp.DisplayAlerts = True Exlapp.Quit Set ExlWorkBook = Nothing Set Exlapp = Nothing End End If StatusBar1.Panels(1).Text = "Excel应用实例已创建,Spec_upld_Template.xls 模板已正确加载!" SSTab1.TabEnabled(1) = False SSTab1.TabEnabled(0) = True SSTab1.Tab = 1 SSTab1.TabVisible(1) = True VScroll1.Max = Cerworkspace.Height - ACspace.Height + 375 VScroll1.Min = 1 VScroll1.SmallChange = 380 VScroll1.LargeChange = 1900 SSTab1.Tab = 0 'Sleep 1000 Unload welcome End Sub
weixin_41873780 2018-07-04
  • 打赏
  • 举报
回复
如何改进?请前辈指教!!
舉杯邀明月 2018-07-04
  • 打赏
  • 举报
回复
On Error Resume Next


程序中需要用到Excel等“第三方进程”来操作,竟然还敢 On Error Resume Next
用了这个,还想找到“错误原因”! 洗洗睡吧…………

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧