创建一个新的VB6项目。将以下代码粘贴为项目代码。命中运行。看它是否崩溃...在此代码中删除或简化您喜欢的任何内容,然后它将正常工作。 任何人都可以详细说明为什么会崩溃吗?
到目前为止,已经在8台PC上进行了测试,所有这些都运行Windows XP,Windows Vista,Windows 7,Office 2010和Office 2007的各种组合。在Visual Basic IDE中测试它的是Visual Basic 6 SP 6安装。
Private Sub Sleep(ByVal nSeconds As Long)
Dim nStart As Long: nStart = Timer
Do
DoEvents
Loop Until (Timer - nStart) >= nSeconds
End Sub
Private Sub Crash()
Dim sTempPath As String: sTempPath = Space(255)
End Sub
Private Sub Form_Initialize()
Sleep 1
Crash
End Sub
附录#1:
我将此作为宏放在Excel 2010中,将Form_Initialize()
替换为Workbook_Open()
,当然,当您打开文档时。它崩溃了!
附录#2:
我在点击“运行”之前向每一行添加了断点,并在它到达第一个断点之前崩溃了。但同样,如果我简化或删除任何内容,它工作正常,不会崩溃。
附录#3:
尝试过MicSim删除冒号的建议,但没有崩溃。添加它,再次运行它并且不崩溃。关闭Visual Basic,并输入原始代码并将其崩溃。
附录#4:
Visual Basic 6 IDE中的问题详细信息:
问题签名:
问题事件名称:APPCRASH
应用程序名称:VB6.EXE
应用版本:6.0.81.76
申请时间戳:3592011f
故障模块名称:VBA6.dll
故障模块版本:6.0.0.8169
故障模块时间戳:358b0c74
例外代码:c0000005
异常抵消:00026329
操作系统版本:6.1.7601.2.1.0.256.4
地区ID:1033
附加信息1:7e3b
附加信息2:7e3beb1e9ccf6d519c5b994ca59a280f
附加信息3:7b83
附加信息4:7b833c57ebcf54809fd3aaccd8ea4f46
在线阅读我们的隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
如果没有在线隐私声明,请离线阅读我们的隐私声明:
C:\ WINDOWS \ SYSTEM32 \ EN-US \ erofflps.txt
附录#5:
Microsoft Excel 2010中的问题详细信息:
问题签名:
问题事件名称:APPCRASH
应用程序名称:EXCEL.EXE
应用版本:14.0.4756.1000
申请时间戳:4b9c08e8
故障模块名称:VBE7.DLL
故障模块版本:7.0.15.90
故障模块时间戳:4b7b1248
例外代码:c0000005
异常抵消:00045b6a
操作系统版本:6.1.7601.2.1.0.256.4
地区ID:1033
有关此问题的其他信息:
LCID:1033
skulcid:1033
在线阅读我们的隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
如果没有在线隐私声明,请离线阅读我们的隐私声明:
C:\ WINDOWS \ SYSTEM32 \ EN-US \ erofflps.txt
答案 0 :(得分:5)
在审核了您的问题和所有附录后,我意识到您的计算机正在运行VB6的发布版本,而不是 SP6。
您的崩溃详细信息表明以下版本:
Visual Basic 6.0 SP6文件的确切内部版本号如下:
异常代码c0000005对应于模块vba6.dll中的访问冲突。 Microsoft KB
中记录了类似的问题我没有找到准确的源列出每个VB6服务包的内部版本号,但看起来这是RTM version。即使您自己安装了SP6,但在安装Service Pack之后,恶意安装程序可能会覆盖旧版本的共享系统文件。这可以解释为什么许多用户评论说代码在看似相似的设置下工作正常。