【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障

上年离职在家搞装修的时候还是脑不停手不停,根据自己这几年的工料测量/工程造价 工作的习惯,除了用VBA编写了钢筋平法锚固&搭接长度速查表,还编写了Ribbon Tab的小插件。本想上班的时候能用得上,但公司电脑加载XLMA文件的时候却出现这个提示“系统错误 &H8000 FFFF(-2147418113)。灾难性故障”▼

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第1张图片

由于当时工作量太大无暇顾及,我便选择放弃了治撩,及至后来重装了新的操作系统,插件复活了,我还一度认为简单的认为是系统原生文件的问题。

及至今年一些特殊原因,在新东家的机子又重灌了操作系统。这错误又出现了。一年过去了,再次搜寻答案,这次还硬着头皮把法文的一个BBS回复也机翻着啃了,网上还是没一个可以解决的个案。本着哥好歹当年也是计算机科学与技术专业毕业的,就来了次教科式的排错,居然把问题给解决了


 sdfasdfasdf


原因分析

&H8000FFF 是个内存地址,计算机专业的人一看就知道是内存寻址的问题。后来再弹出的“内存溢出”的对话框就算是用一点点人话解释上之前弹框的系统代码。由于我的插件模块有很多个,不妨缩小一下出错的范围

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第2张图片

Ribbon Tab▲ + Custom ContextMenu▼

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第3张图片

点击全部项测试之后,没有操作窗口的运行过程代码全部没有报错,有操作弹框的项目,这次发现只有关于M-Contoso的窗口出现崩溃,也就说那个窗口使用的与其它窗口不同的控件或者设置出问题了。而上年的话,比较夸张,连弹出窗口的都崩溃了,也就是有可能连原生引用的几个库都出现问题;

修复对象

上文提及库这个名词,不明白的话继续往下看,ALT+F11打开编辑环境▼

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第4张图片

工具→引用

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第5张图片

▼引用组件

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第6张图片

出现本文要解决的内存寻址问题,与上面窗口打的组件有关。

1.Visual Basic For Applications,一般打开编辑环境没直接报错,基本与它没关系。如果有关系那好办,重装修复Office或者顺带升级新版本能复活;

2.Microsoft Office/Excel 16.0 Object Libary(16.0对应是2016的Office版本,15.0对应2013,14.0对应2010), 这两个库提供的是原本office里面原生的对象、方法和属性,如果没有操作窗口的运行过程代码没报错的话,就可以证明内存溢出与这两个库都没关系。如果居然神奇地发现有关联的,处理方法参照第1点;

3.OLE Automation,这个与数据库连接的组件要比其它组件复杂得多,如果电脑里有SQLSever,就逐个排错吧,没有的话,那用MS原盘重装系统是最后的选择(不要用GHOST安装的版本,就算换了个GHOST失败的机率仍然很高,其实有些时候就是GHOST封装系统的DLL、OCX的内存读址偏移问题)

4.Microsoft Forms 2.0 Object Libary,如果不是全部有窗体初始化都出现问题的话在没报错的电脑上试删除出错窗体的某些控件或者代码,通过导入导出文件的方法测试一下到底是哪个控件或代码出问题。

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第7张图片

如果是全部窗体初始化都报错的话,那么把没报错电脑的FM20.DLL复制到报错电脑中,用Regsvr32/u FM20.DLL 命令解除原系统GUID接口,再用Regsvr32 FM20.DLL 重新注册。如果都不行的话,放弃治疗或者MS原盘重装系统吧;

上节,我很快的就可以确定是下面窗口引用Micsoft Forms 2.0 Object Library里面的一个控件出问题或者设置出问题了▼

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第8张图片

由于窗体很简单,我就干脆把UI都改了,虽然还是很简陋▼

【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障_第9张图片

然而后来用导出导入模块方法测试了,然后是一行点击图片触发的代码出问题:

CreateObject("wscript.shell").Run "https://creativecommons.org/licenses/by-sa/3.0/cn/"


你可能感兴趣的:(【Excel】居然解決了一個互联网长达十年以上無解的問題!!! &H8000FFFF(-21474818113) 灾难性故障)