vb 6 运行时的Run-time error 13,Type mismatch错误求救?

时间:2022-09-13 17:04:46
各位,使用VB6开发的一个软件系统,已在客户处使用了一段时间。
近期,客户报告打印报表时频繁出错,出差的提示信息是: Run-time error ‘13’, Type mismatch,然后软件系统就崩溃退出了。
打印报表的功能使用了excel模版的方式来打印,把数据输出到模版文件中,再调用excel的打印功能来进行打印。
客户电脑的操作系统是win xp sp2, office是2003。
首先,通过查看源码,未发现明显的错误。然后把客户的运行程序包括excel模版文件复制到我开发电脑上进行测试,打印
报表功能均正常,我的开发电脑的配置也是win xp sp2, office也是2003。
另外,通过源码分析,问题应该是出在往excel模版文件中填充实际的报表数据时导致,但是具体是哪个填充语句导致还未知,
而且问题可能不是在具体的源码上,而是在具体的客户电脑上的一些配置上。想请教各位,具体可以查看客户电脑上哪些配置可以确定该错误的原因,谢谢!

5 个解决方案

#1


让用户安装完整版本的Office,而不是山寨盗版系统集成的那种精简Office

#2


错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。

#3


引用 1 楼 caozhy 的回复:
让用户安装完整版本的Office,而不是山寨盗版系统集成的那种精简Office

谢谢,我也怀疑是否是客户的excel有某种程度的损坏,导致此问题的发生。有什么方法可以大致查看完整性。

#4


引用 2 楼 of123 的回复:
错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。


引用 2 楼 of123 的回复:
错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。


谢谢你的建议和意见,导出数据时是从数据库某个视图里面的数据导出的,数据格式应该是固定的,虽然没用实际的数据进行
测试,但是数据的格式应是不变的。

我怀疑问题是出在对excel表格格式进行设置的这几行代码上,最后一行,输出统计数据为
xlsWS.Range("A5 :L5").Delete                         //合并单元格
xlsWS.Range("A5").Font.Size = 10                  
xlsWS.Range("A5").HorizontalAlignment = 1
xlsWS.Range("A5") = "合计:" & Format(summoney, "0.00") & "元"

请各位看看以下这几行代码是有足够的健壮性,谢谢!



#5


经过在客户环境中测试,初步检查客户安装的office2003, 未发现明显问题。但是卸载掉office2003, 再重新安装一次office2003后,经过测试该错误问题就解决了。所以该问题应该是客户之前的office2003受到某种程度的损坏导致。

#1


让用户安装完整版本的Office,而不是山寨盗版系统集成的那种精简Office

#2


错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。

#3


引用 1 楼 caozhy 的回复:
让用户安装完整版本的Office,而不是山寨盗版系统集成的那种精简Office

谢谢,我也怀疑是否是客户的excel有某种程度的损坏,导致此问题的发生。有什么方法可以大致查看完整性。

#4


引用 2 楼 of123 的回复:
错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。


引用 2 楼 of123 的回复:
错误原因可能是 VB 程序的 Bug。

当导入的数据偶然为某一种编写软件时没有考虑到的特定内容(格式)时,就会出现问题。因此,你可以找用户索取他们出错的数据来验证问题。

比如,你使用 Clng, CDbl 等函数时,如果参数字符串有不兼容的格式或字符,就会出现“类型不匹配”错误。

最根本的,还是对数据进行检查处理。此外,就是使用兼容性更好的函数,比如 Val。


谢谢你的建议和意见,导出数据时是从数据库某个视图里面的数据导出的,数据格式应该是固定的,虽然没用实际的数据进行
测试,但是数据的格式应是不变的。

我怀疑问题是出在对excel表格格式进行设置的这几行代码上,最后一行,输出统计数据为
xlsWS.Range("A5 :L5").Delete                         //合并单元格
xlsWS.Range("A5").Font.Size = 10                  
xlsWS.Range("A5").HorizontalAlignment = 1
xlsWS.Range("A5") = "合计:" & Format(summoney, "0.00") & "元"

请各位看看以下这几行代码是有足够的健壮性,谢谢!



#5


经过在客户环境中测试,初步检查客户安装的office2003, 未发现明显问题。但是卸载掉office2003, 再重新安装一次office2003后,经过测试该错误问题就解决了。所以该问题应该是客户之前的office2003受到某种程度的损坏导致。