首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止Excel错误:在win32 [14756]中发生了未处理的EXCEL.EXE异常

如何防止Excel错误:在win32 [14756]中发生了未处理的EXCEL.EXE异常
EN

Stack Overflow用户
提问于 2018-11-02 11:02:54
回答 2查看 4K关注 0票数 4

我工作的客户端最近将所有膝上型计算机升级到运行windows 10 (版本10.0.16299)和Office 2016: Microsoft 2016 MSO (16.0.9126.2295) 64位Microsoft 365 ProPlus

我正在处理一个Excel应用程序,该应用程序在旧笔记本电脑下运行良好,但现在已开始崩溃Excel,导致以下错误:在win32 14756中发生了一个未处理的EXCEL.EXE异常

有不同的对话框消息显示为Excel崩溃: Microsoft已停止工作,Windows错误报告已停止工作

另一篇论坛文章建议检查Windows事件查看器以获得错误崩溃报告的日志。这给了我以下细节:

故障应用程序名: EXCEL.EXE,版本: 16.0.9126.2295,时间戳: 0x5bafc794故障模块名称: MSCOMCTL.OCX,版本:0.0.0,时间戳: 0x5984a51c异常代码: 0xc0000005故障偏移:0x0000000000000000021f8f故障进程ID: 0x42c8故障处理进程ID: 0x01d47124a3a41f4c故障应用程序路径: C:\Program \Microsoft Office\Root\Office16\EXCEL.EXE故障模块路径: C:\windows\system32\MSCOMCTL.OCX报告ID: 74d9c093-61f0-4616-b20b-dc72acda9a5故障包全名:故障处理程序包-相关应用程序:ID:

我一直在使用我收集到的信息在许多论坛上寻找解决方案,到目前为止,结果是空的。

我已经将问题隔离到特定的用户操作中,单击ListView控件。将此控件添加到应用程序中,以替换窗体上的前Listbox控件,以便将字体颜色设置为选中项时的红色。由于移动到Surface膝上,此ListView控件似乎导致冲突,导致Excel崩溃。我不能比这更确定。禁用ListView控件并将应用程序设置为使用ListBox控件似乎解决了此问题。

我希望这对其他人有帮助。如果有人能解释为什么Excel真的崩溃了,我会很感激,因为我只觉得我有一个解决办法,而不是一个修复。

我想知道是否与64位v32位驱动程序/dll文件有冲突。正在使用的VBA引用如下:VBA参考文献标记

EN

回答 2

Stack Overflow用户

发布于 2018-12-14 16:16:57

感谢“jkpieterse”和“共产国际”的建议。

问题的原因是在使用32位控件和VBA代码时迁移到Excel 2016 64位。

最后,为了防止Excel崩溃,我们必须进行一些更改。

1)删除对ListView对象的所有代码和对象引用。

2)遵循微软这篇文章中确保VBA与Office 2016 64位兼容的指导方针:https://learn.microsoft.com/en-us/office/client-developer/shared/compatibility-between-the-32-bit-and-64-bit-versions-of-office

3)为了避免Excel崩溃的问题,我们最终联系了Microsoft支持部门,建议我们在以下文件中安装一个新的注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options\

名称: ForceVBALoadFromSource类型: DWORD

值=1

(请参阅知识库文章:https://support.microsoft.com/en-gb/help/4011597/december-5-2017-update-for-excel-2013-kb4011597)他们解释说,这是微软推出的一种修正,它迫使Excel在64位系统上完全编译VBA,这防止了32位代码部分编译时出现的问题。

显然,您应该备份您的注册表,并在应用此修复程序之前创建一个恢复点(如果您有此修补程序,请与您的技术部门检查!)

在支持调用之前,我已经将崩溃的范围缩小到调用特定表单的时间。在此之前,VBA代码运行良好,已成功地将ADODB连接到Server数据库,并返回数据。当表单被调用时,应用程序崩溃。如果加载了不同的表单,应用程序就不会崩溃,这意味着有其他控件或代码会导致编译错误或冲突。

此外,我还发现,如果Visual编辑器窗口已经打开,则应用程序不会崩溃。我可以添加一行代码以编程方式打开VBE窗口(加上一些代码来调整VBE窗口的大小,这样它就不会隐藏表单):

代码语言:javascript
运行
复制
Application.VBE.MainWindow.Visible = True
With Application.VBE.MainWindow
    .Width = 500
    .Height = 500
End With

添加此代码后,应用程序也不会崩溃。

问题形式太复杂,无法在不花费大量开发成本的情况下重新创建。幸运的是,微软的修复解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2021-01-06 10:06:54

最近,当从外接程序中调用子例程时,我遇到了类似的崩溃问题。该代码在手动调试时运行良好。我们正在使用Excel 2016,32位版本。我发现这个问题与外接程序中的未编译代码有关。在使用调试->从VBA编辑器重新编译所有代码后,错误消失了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53117360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档