从Excel 2013降级到Excel 2010时丢失VBA


3

我在Windows 7上。过去我使用的是Excel 2003.我安装了Office 2013,发现我的Office 2003完好无损,我可以运行这两个版本。我使用Excel 2013和VBA代码更新了一些工作表。

我被告知我需要使用Office 2010(我不会介绍原因)所以我卸载了Office 2013并安装了Office 2010(公司许可证)。当我打开2010年使用Excel 2013修改的电子表格时,我收到了Microsoft Visual Basic for Applications消息:

班级未注册。用CLSID寻找物体:(AC9F2F90-E877-11DE-9F68-00AA00574A4F)

当我点击Ok时,我收到Excel消息

Excel在name_of_spreadsheet .xls中找到了不可读的内容。您想恢复此工作簿的内容吗?

如果我选择YES,那么我会收到一条消息

Excel能够通过修复或删除不可读的内容来打开该文件。丢失Visual Basic项目。对数据透视表进行了修复,从工作簿和丢失的ActiveX控件中删除了一个或多个无效的条件格式。

现在找不到VBA代码。工作簿打开并看起来正常,但运行VBA的按钮不起作用,打开VBA(Alt+ F11)时,我看不到任何模块。

我尝试运行FM20.dll使用regsrv32.exe,我收到一条消息说:

模块fm20.dll无法加载。确保二进制文件存储在指定的路径中或调试它以检查二进制文件或从属.DLL文件的问题。指定的模块无法找到”。

但是我从FM20.dll所在的子目录中运行了regsrv32。

我认为我的问题与丢失Visual Basic项目和/或ActiveX控件有关。

在删除Excel 2013和安装Excel 2010之前,我需要做些什么才能找到那里的VBA代码?

Answers:


3

我遇到了类似的问题。我使用了另一台尚未“升级”到2013年的另一台计算机的fm20.dll文件。注册fm20.dll很好,我的问题消失了。看来fm20.dll文件已损坏。任何具有Userforms的VBA似乎都会受到影响。我收到的Excel 2010错误是:“此工作簿的应用程序(VBA)宏的可视化基础已损坏并已被删除。当前文件中很可能存在宏损坏。要恢复宏,请打开备份副本这个文件,如果你有一个。“ 一个简单的测试,打开一个VBA工作簿,只有代码,工作,一个简单的文件与Userform,其上有一个标签,没有代码,失败,导致我到fm20.dll文件。我有同样的消息试图在问题系统上注册fm20.dll文件,说文件很糟糕。从一个好的系统复制了一个新的fm20.dll,注册很顺利,问题消失了。


2

Office 2013安装VBA 7.1。有了它,FM20.dll的更新版本 - 反过来又依赖于VC10可再发行组件 - 特别是msvcr100.dll。卸载VBA 7.1时 - 它不会删除FM20.dll - 但随附的应用程序很可能会删除VC10 redist。如果是这样,FM20.dll就坏了。这不是它的腐败 - 它只是不完整。(我使用Visual Studio工具,Depends.exe跟踪了这个)

问题是重新安装使用VBA 6.x的应用程序 - 不会覆盖此较新版本的FM20.dll,因此该文件仍然存在损坏。

似乎这是VBA 7.1安装程序中的一个错误,它不会清理此文件。你必须解决选择。删除FM20.dll并修复旧版应用程序 - 或安装VC10可再发行程序。


1

这篇博文帮助我纠正了这个错误:https
//dynamicsgpland.blogspot.in/2009/11/vba-error-class-not-registered-looking.html

VBA错误:类未注册。使用CLSID查找对象:{AC9F2F90-E877-11CE-9F68-00AA00574A4F}

我知道,我知道,这是一个明显的错误,对吗?我的意思是,真的,有没有人留在动态GP世界中,因为询问这个明显的班级ID而不会嘲笑你?

所以我最近为一个新项目创建了一个新的开发虚拟服务器,我做了几十次而没有问题。但出于某种原因,这次我遇到了一些与Dynamics GP有关的奇怪问题。其中一个是这个VBA错误:

在此输入图像描述

这是在安装了SP4的全新Windows Server 2008 x64虚拟服务器,SQL Server 2005 SP3和Dynamics GP 10 FP1上。我没有安装Visual Studio或Office,我很确定是错误的原因。

每当我尝试将用户表单文件导入VBA时,或者每当我尝试插入新的用户表单时,都会发生错误。

我后来发现这个错误显然是MBS知识库文章961568中描述的错误:

“加载期间发生错误”或导入具有用户表单的包文件时:控制frmXXX的类{C62A69F0-16DC-11CE-9E98-00AA00574A4F}不是加载的控件类。

当时,我知道这可能意味着DLL没有在服务器上注册,但是虽然那些可爱的GUID很高兴看到,但它们并没有向普通人传达哪些DLL没有注册。

作为一种捷径,我切换到一个服务器,我知道VBA中的用户表单没有任何问题,并在注册表中搜索该GUID。该搜索告诉我,问题是FM20.dll文件没有注册。

在谷歌搜索该文件名后,我了解到FM20.dll是允许VBA使用Windows窗体所需的文件。这篇可爱的知识库文章描述了它的用法,但强调FM20.dll是“不可再发行”的(他们不得不为我们这些不清楚和混淆这个词的小写非粗体版本的人制作全部大写和粗体'不是'),它只能通过安装恰好分发它的几个Microsoft应用程序之一来获得。

它必须让价格高昂的律师团队花费数千美元的计费时间来提出这个绝佳的方案,这肯定会阻止某人复制单个DLL文件并手动注册它。为了避免那些同样的暑期实习法律学者的愤怒,我不是简单地从另一台机器上复制DLL并将其注册到我的新服务器上。相反,我使用同一知识库文章中的链接下载了如此流行的“Microsoft ActiveX控制板”,它为我安装了令人垂涎的FM20.dll。

(当然,MBS知识库文章说只是从MS Office CD复制FM20.dll文件。跳过规则,我们是,MBS?)

并且,由此,错误消失了,我能够插入用户表单并将表单文件导入到我的VBA项目中。

一个注意事项 - 如果您使用的是Windows Server 2008 x64,则32位文件将安装在C:\ Windows \ SysWOW64目录中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.