解决CreateOjbect("Excel.Application")的错误

在 Visual Basic 中,错误 429 的原因有多个。如果满足以下任何条件,则会发生此错误:
应用程序中出现错误。
系统配置中出现错误。
缺少某个组件。
某个组件损坏。
要查找错误的原因,需隔离问题。如果您在客户端计算机上收到错误 429,请使用以下信息来隔离和解决 Microsoft Office 应用程序中的错误。

注意:以下某些信息可能也适用于非 Office COM 服务器。但是,本文假定您要自动执行 Office 应用程序。

检查代码

<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 在解决错误之前,尝试隔离一行可能导致问题的代码。

如果您发现一行可能导致问题的代码,请完成这些步骤:
确保代码使用显式对象创建。

如果将问题缩窄到单个操作,则更易于确定问题。例如,寻找使用隐式对象创建的代码,如以下示例之一。

代码示例 1
Application.Documents.Add 'DON'T USE THIS!!
代码示例 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!!
'... some other code
oWordApp.Documents.Add
以上两个代码示例都使用了隐式对象创建。在至少调用变量一次之前,Microsoft Office Word 2003 不会启动。由于变量可能在程序的不同部分中被调用,因此可能难以找到问题。可能难以验证是在创建 Application 对象时还是在创建 Document 对象时导致问题。

您可以改为进行显式调用以分别创建每个对象,如下所示。
Dim oWordApp As Word.Application
Dim oDoc As Word.Document
Set oWordApp = CreateObject("Word.Application")
'... some other code
Set oDoc = oWordApp.Documents.Add
当您进行显式调用以分别创建每个对象时,会更易于隔离问题。这样做也可能使代码更易于阅读。
创建 Office 应用程序的实例时,使用 CreateObject 函数,而不使用 New 运算符。

CreateObject 函数紧密映射大多数 Microsoft Visual C++ 客户端使用的创建过程。CreateObject 函数还允许在版本之间更改服务器的 CLSID。可将 CreateObject 函数与早期绑定对象以及后期绑定对象一起使用。
验证传递给 CreateObject 的“ProgID”字符串是否正确,然后验证“ProgID”字符串是否独立于版本。例如,使用“Excel.Application”字符串而不是使用“Excel.Application.8”字符串。失败的系统可能有旧于或新于您在“ProgID”字符串中指定的版本的 Microsoft Office 版本。
使用 Erl 命令来报告不成功的代码行的行号。这可能帮助您在 IDE 中调试无法运行的应用程序。以下代码告诉您无法创建 Automation 对象(Microsoft Word 或 Microsoft Office Excel 2003):
Dim oWord As Word.Application
 	Dim oExcel As Excel.Application
 	
 	On Error Goto err_handler
 	
 	1: Set oWord = CreateObject("Word.Application")
 	2: Set oExcel = CreateObject("Excel.Application")
 	
 	' ... some other code
 	
 	err_handler:
 	  MsgBox "The code failed at line " & Erl, vbCritical
使用 MsgBox 函数和行号来跟踪错误。
使用后期绑定,如下所示:
Dim oWordApp As Object
早期绑定对象要求跨进程边界封送它们的自定义接口。如果在 CreateObjectNew 期间无法封送自定义接口,则会收到错误 429。后期绑定对象使用不需要封送自定义代理的 IDispatch 系统定义接口。使用后期绑定对象来验证此过程是否正确工作。

如果只在对象被早期绑定时发生问题,则问题在服务器应用程序中。通常,可以如本文中的“检查自动化服务器”一节所述重新安装应用程序,以纠正问题。

检查自动化服务器

<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 发生 CreateObjectNew 相关错误的最常见原因是服务器应用程序有问题。通常,应用程序的配置或安装会引起该问题。要解决问题,请使用以下过程:
验证您要自动执行的 Office 应用程序安装在本地计算机上。确保可以运行该应用程序。要这样做,依次单击“开始”和“运行”,然后尝试运行该应用程序。如果无法手动运行该应用程序,则该应用程序将不能以自动化方式工作。
重新注册该应用程序,如下所示:
1.单击“开始”,然后单击“运行”。
2.在“运行”对话框中键入服务器路径,然后将 /RegServer 添加到行尾。
3.单击“确定”。

应用程序以静默方式运行。应用程序作为 COM 服务器重新注册。
如果是因为缺少某个注册表项而发生问题,则以上步骤通常能纠正问题。
在 CLSID 下检查要自动执行的应用程序的 LocalServer32 项。确保 LocalServer32 项指向该应用程序的正确位置。确保路径名称为短路径 (DOS 8.3) 格式。您不必通过使用短路径名称来注册服务器。但是,在一些系统上,包含嵌入空格的长路径名称可能导致问题。

要检查为服务器存储的路径项,请如下所示启动 Windows 注册表编辑器:
1.单击“开始”,然后单击“运行”。
2.键入 regedit,然后单击“确定”。
3.移到 HKEY_CLASSES_ROOT/CLSID 项。

系统上注册的自动化服务器的 CLSID 位于此项下。
4.使用 CLSID 项的下列值查找代表要自动执行的 Office 应用程序的项。检查 CLSID 项的 LocalServer32 项中的路径。
Office 服务器CLSID 项
Access.Application{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application{00024500-0000-0000-C000-000000000046}
FrontPage.Application {04DF1015-7007-11D1-83BC-006097ABE675}
Outlook.Application{0006F03A-0000-0000-C000-000000000046}
owerPoint.Application{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application{000209FF-0000-0000-C000-000000000046}
5.确保路径匹配文件的实际位置。
注意:短路径名称可能看起来正确,而实际上并不正确。例如,Office 和 Microsoft Internet Explorer(如果它们安装在其默认位置)的短路径均类似于 C:/PROGRA~1/MICROS~X/(其中 X 是数字)。此名称初看起来不像是短路径名称。

要确定路径是否正确,请执行下列步骤:
1.单击“开始”,然后单击“运行”。
2.从注册表中复制值,然后在“运行”对话框中粘贴值。

注意:在运行应用程序之前删除 /automation 开关。
3.单击“确定”。
4.验证应用程序运行正常。

如果在单击“确定”后应用程序能够运行,则正确注册了服务器。如果在单击“确定”后应用程序不运行,则用正确的路径替换 LocalServer32 项的值。如果可以,请使用短路径名称。
测试 Normal.dot 模板或 Excel.xlb 资源文件是否可能损坏。如果 Word 中的 Normal.dot 模板或 Excel 中的 Excel.xlb 资源文件损坏,则在自动执行 Microsoft Word 或 Microsoft Excel 时可能出现问题。要测试这些文件,搜索本地硬盘驱动器以查找 Normal.dot 或 Excel.xlb 的所有实例。

注意:对于运行 Microsoft Windows 2000 或 Microsoft Windows XP 的系统,可能会找到这些文件的多个副本。对于这些文件中的每一个,都有一个副本对应于系统上安装的每个用户配置文件。

临时重命名 Normal.dot 文件或 Excel.xlb 文件,然后重新运行自动化测试。如果 Word 和 Excel 无法找到这些文件,它们会创建这些文件。验证代码是否工作。如果创建新的 Normal.dot 文件时代码工作,则删除重命名的文件。这些文件已损坏。如果代码不工作,则必须将这些文件重命名为其原始文件名,以保存这些文件中保存的任何自定义设置。
如果系统运行 Windows 2000,则在管理员帐户下运行应用程序。Office 服务器需要注册表和磁盘驱动器的读/写访问权。如果当前安全设置拒绝读/写访问权,Office 服务器可能无法正确加载。

检查系统

<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 系统配置也可能会导致进程外 COM 服务器创建问题。要解决问题,请在发生错误的系统上使用以下过程:
确定问题是否出现在任何进程外服务器上。如果您有使用特定 COM 服务器的应用程序(例如 Word),请测试其他进程外服务器,以确保问题不是出在 COM 层本身上。如果无法在计算机上创建进程外 COM 服务器,则按照本文中的“重新安装 Microsoft Office”一节所述重新安装 OLE 系统文件,或者重新安装操作系统以解决问题。
检查管理自动化的 OLE 系统文件的版本号。这些文件通常作为集合安装。这些文件必须匹配内部版本号。不正确配置的安装实用程序可能会错误地分别安装这些文件。这会导致文件不匹配。为避免出现自动化问题,请检查文件以确保文件内部版本匹配。

自动化文件位于 Windows/System32 目录或 Winnt/System32 目录中。检查以下文件。
文件名版本修改日期
Asycfilt.dll3.50.50142002 年 9 月 04 日
Oleaut32.dll3.50.50162002 年 9 月 04 日
Olepro32.dll5.0.50142002 年 9 月 04 日
Stdole2.tlb3.0.50142002 年 9 月 04 日
要检查文件版本,请在 Windows 资源管理器中右键单击文件,然后单击“属性”。注意文件版本的最后四位数(内部版本号)和文件的上次修改日期。确保这些值对于所有自动化文件均相同。

注意:较早的版本号和较早的日期是从安装了 Office 2003 的 Windows Server 2003 计算机中检索的。这些编号和日期只用作示例。您的值可能不同。

如果文件不匹配内部版本号或修改日期,请下载更新自动化文件的自解压实用程序。

有关如何访问运行时文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
235420 (http://support.microsoft.com/kb/235420/) VBRun60sp4.exe 安装 Visual Basic 6.0 SP4 运行时文件
对于可能限制在 Office 应用程序中运行代码的第三方应用程序,使用系统配置实用程序 (Msconfig.exe) 来检查服务和系统的启动。 有关 Msconfig.exe 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
310560 (http://support.microsoft.com/kb/310560/) 如何在 Windows XP 中使用系统配置实用程序来排除故障
例如,Outlook 自动化应用程序可能因为您正在运行具有“脚本阻止程序”功能的防病毒程序而失败。

注意:请仅在未连接到网络的测试系统上暂时禁用防病毒程序。

或者,在 Outlook 中执行下列步骤以禁用第三方加载项:
1.在“工具”菜单上,单击“选项”。
2.在“其他”选项卡上,单击“高级选项”。
3.在“高级选项”对话框中,单击“加载项管理器”。
4.单击任何第三方加载项的复选框以清除它。
5.重新启动 Outlook。
如果此方法解决问题,请与第三方防病毒供应商联系,了解有关更新防病毒程序的更多信息。

重新安装 Office

<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 如果前面任何过程均未能解决问题,则删除 Office,然后重新安装 Office。Microsoft 建议您首先删除现有的版本,然后通过使用原始安装盘重新安装 Office。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C: Excel.Application 是指代使用 Visual Basic for Applications (VBA) 编写的 Excel 应用程序中的 Excel 对象模型。Excel.Application 是用于控制 Excel 应用程序的顶级对象,通过它可以执行许多操作,如创建和保存工作簿、添加和编辑工作表、设置单元格的值和格式等等。 使用 Excel.Application 对象,可以通过编程方式与 Excel 进行交互,实现自动化操作和数据处理。通过 VBA 可以编写自定义的宏,通过 Excel.Application 对象可以实现对 Excel 文档的控制和操作。 通过 Excel.Application 对象,可以创建新的工作簿、打开和保存现有的工作簿,可以对工作表进行添加、删除和修改等操作。可以使用它来读取和写入单元格的值,并对单元格的格式进行设置,也可以对数据进行排序、过滤、计算等。还可以通过 Excel.Application 对象来创建图表、添加图表元素、设置图表的样式等等。 Excel.Application 对象还提供了丰富的事件,可以捕获并响应诸如工作簿或工作表的打开、保存、关闭等事件。通过事件处理程序,可以实现在特定的操作发生时执行自定义逻辑。 总之,Excel.Application 是一个强大的对象,通过它可以实现自动化操作和数据处理,使得使用 Excel 变得更加高效和便捷。通过编写 VBA 代码,可以使用 Excel.Application 对象来控制 Excel 应用程序的各个方面,以满足各种需求和实现各种功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值