信息: 故障排除错误 429 自动化 Office 应用程序时

文章翻译 文章翻译
文章编号: 244264 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

当您使用 New 运算符或 CreateObject 函数中 Microsoft Visual Basic 创建 Microsoft Office 应用程序的一个实例时,您可能会收到以下错误消息:
运行时错误 '429': ActiveX 组件不能创建对象
所请求的自动化对象不能由 COM,创建,因此 Visual Basic 不可用时发生此错误。该错误通常是在某些计算机而不是其他上发现的。

本文提供了一些故障排除提示来帮助您诊断并解决常见的问题已知会导致此错误的。

更多信息

与 Visual Basic 中的某些错误不同错误 429 没有一个原因。在该应用程序或系统配置或丢失或损坏的组件有误时出现问题。查找出确切原因就是消除了可能性。如果您遇到此错误,客户端计算机上的,有许多事情需要将检查以确定并解决该错误。

项以后为您提供有关使用 Office 应用程序时解决此错误的一些实用建议。这其中的某些信息可能还会将应用于为很好地非 Office COM 服务器,但本文假设您要自动执行 Office。

检查代码

在开始寻找问题的第一个位置是在代码中。您可以在进行故障排除错误之前,您需要了解发生错误。请尝试缩小其范围向下一行代码。

当您发现的失败代码时,尝试执行以下:
  • 请确保该代码使用显式的对象创建。任何问题,则更容易发现并确定如果问题缩小到单个操作。例如对于不做以下:
    Application.Documents.Add 'DON'T USE THIS!!
    						
    或:
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    						
    这两种方法使用隐式对象创建。至少一次调用该变量之前,不被启动 Word。因为该变量可以在程序的不同部分来调用,这会使问题难以进行本地化。此外,它是不明确,问题是否与创建该应用程序对象或文档对象。

    而是,请分别创建每个对象的显式调用:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    						
    这更容易将问题隔离,使代码更具可读性。
  • 在创建 Microsoft Office 应用程序的实例时使用 CreateObject 而不是 新建CreateObject 更紧密地映射到大多数有关 Visual c + + 的客户端使用在创建过程,并允许在服务器的 CLSID 版本之间可能更改。CreateObject 可以早期绑定和后期绑定对象一起使用。
  • 验证程序 id 的字符串传递给 CreateObject 是否正确以及它是独立的版本 (也就是使用"Excel.Application"而不是"Excel.Application.8")。它可能是发生故障的系统已是较旧的或较新版本的 Microsoft Office 比您在 $ ProgID 中指定的版本。
  • 若要获得调试应用程序无法在 IDE 中运行的帮助,请使用 Erl 命令报告的失败的行的行号。例如对于下面的代码将告诉您不能创建的自动化对象 (Word 或 Excel):
    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
    						
    使用消息框的组合并行编号,以跟踪错误。
  • 请尝试使用后期绑定 (也就是 Dim oWordApp As Object)。早期绑定的对象要求他们自定义接口来进行跨进程边界封送处理。如果封送处理期间 CreateObject 的自定义接口出现问题,您将收到错误 429。后期绑定的对象使用系统定义接口 (IDispatch),不需要自定义的代理服务器要封送处理。尝试使用后期绑定的对象,以查看这样一个区别。

    如果仅当对象是早期绑定时,将出现该问题,该问题是与服务器应用程序,并通常可以通过重新安装该应用程序 (请参阅后面) 进行更正。
  • 如果您从 ASP 或 MTS 元件自动化的使用 CreateObject 而不是 Server.CreateObject()。使用 Server.CreateObject 将实例化 Office 应用程序在标识下一个 MTS 包,这会导致与 Microsoft Office 的问题已知。

检查自动服务器

CreateObject 错误最常见的原因是服务器应用程序本身的问题。通常,这些问题是与配置的应用程序的安装。下面是要检查的某些项:
  • 验证您要自动应用程序在本地计算机安装的 Office,并确保您可以从开始启动应用程序并运行对话框。如果无法手动启动该程序,它将无法通过自动化。
  • 通过在 $ 开始中键入到该服务器路径中重新注册应用程序,然后运行对话框,然后将附加 / RegServer 到行尾。请按 确定。这应以静默方式运行应用程序,并为 COM 服务器中重新注册它。如果缺少注册表项是该问题,这通常将更正它。
  • 检查在 CLSID 下 LocalServer32 项,为您要自动化的应用程序。请确保它将指向正确的位置为该的应用程序,请确保路径名称为短路径 (DOS 8.3) 格式。虽然这不是一个服务器是一个要求使用一个较短的路径名称注册,包含嵌入的空格的长路径名有已知 (请参阅后面) 在某些系统上导致问题。

    若要检查服务器的存储路径键,启动 Windows 注册表编辑器,通过在 $ 开始中键入 regedit,然后运行对话框。导航到 HKEY_CLASSES_ROOT\Clsid 项。在此项下,您将找到该 clsid 为在系统上已注册的自动化服务器。稍后使用值,类型的值,该值代表在 Office 应用程序,您想自动并检查其 LocalServer32 项的路径中找到。
       +========================+=========================================+
       | Office Server          | CLSID Key                               |
       +========================+=========================================+
       | 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}  |
       +------------------------+-----------------------------------------+
       | PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B}  |
       +------------------------+-----------------------------------------+
       | Word.Application       | {000209FF-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
    						
    路径不匹配的文件实际位置吗?注意短路径名称可以为您提供的路径正确时它可能并不是, 给人留下深刻印象。例如对于 Microsoft Office 和 Microsoft Internet Explorer (如果已安装在其默认位置) 都将有一条短路径类似于"C:\PROGRA~1\MICROS~X\"其中 X 是某些数字。它不能立刻显而易见您从查看短路径名称。

    路径正确无误确实通过将值从注册表复制并粘贴到开始,然后运行对话框中,您可以测试 (删除该 / 自动化 切换之前运行该应用程序)。应用程序启动时选择 确定?如果是,服务器正确注册。如果不,您应使用正确的路径 (使用尽可能短的路径名称) 替换 LocalServer32 关键字的值。
  • 当自动化 Word 或 Excel 如果 Normal.dot 模板 (Word) 或 Excel.xlb 资源文件 (Excel) 已损坏时,会出现已知的问题。若要测试是否出现了一个损坏,搜索来查找 Normal.dot 或 *.xlb 的所有实例本地硬盘。(请注意是否您启用配置文件与运行 Windows 2000、 Windows NT 或 Windows 95/98,您可能会发现一个用于每个用户配置文件在系统上这些文件的多个副本)。临时重命名 Normal.dot 文件或 $ *.xlb 文件并重新运行自动化测试 (Word 和 Excel 将创建这些文件如果它们不能找到它们)。代码现在工作?如果是,然后重命名该文件应将其删除,因此均已损坏。如果不是,您应该对其重命名回为原来的名称以便保存这些文件中的任何自定义设置不会丢失。
  • 如果要在 Windows NT、 Windows 2000、 Windows XP 或 Windows Server 2003 系统上运行该应用程序管理员帐户下。办公室服务器需要对注册表和磁盘驱动器的读/写访问,可能无法正确加载如果您当前的安全设置拒绝此权限。

检查系统

系统配置也可能导致问题的进程外 COM 服务器创建的。下面是发生错误检查在系统上的一些事项:
  • 问题出现的任何进程外服务器吗?如果您只需使用一个特定的 COM 服务器 (例如对于 Word) 的应用程序,您需要测试以确定问题与 COM 层本身不是不同的进程外服务器。如果没有进程外 COM 服务器可以在该系统上创建,然后重新安装的 OLE 系统文件 (如下所示),或若要解决此问题,将需要重新安装操作系统。
  • 请检查管理自动化的 OLE 系统文件的版本号。这些文件通常被安装为一个集,并应该与匹配的内部版本号。一个配置不当的安装程序实用程序可以会错误地将文件单独安装,使它们成为不匹配。若要不必使用自动化的问题,您应该检查以确保该文件匹配的生成文件。

    您将发现自动化文件 Windows\System 或 Winnt\System32 目录中。下面是要检查的文件的列表:
       +---------------+-------------+----------------+
       | File Name     |  Version    | Date Modified  |
       +---------------+-------------+----------------+
       | Asycfilt.dll  |  2.40.4275  | March 08, 1999 |
       | Oleaut32.dll  |  2.40.4275  | March 08, 1999 |
       | Olepro32.dll  |  5.0.4275   | March 08, 1999 |
       | Stdole2.tlb   |  2.40.4275  | March 08, 1999 |
       +---------------+-------------+----------------+
    						
    检查文件版本,在资源管理器在文件上右键单击,然后从弹出菜单中选择属性。最重要的值是最后四位数字的文件版本 (版本号) 和 $ 最后一次修改日期。要确保这些值都是相同的自动化的所有文件。

    请注意该版本号和上面给出的日期,例如只是为了便于。您的值可能会有所不同。重要的是这些值与对方,(而不属于此表相匹配。

    如果内部版本号或已修改的日期不匹配文件,您可以下载一个自解压缩的实用程序,它将更新自动化的文件。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    290887VBRun60sp6.exe 安装 Visual Basic 6.0 SP6 运行时文件
  • Windows NT 4.0 具有启动实时包含嵌入的空格中该的名称和/或类似于其前 8 个字符都是相同的另一个文件夹的文件夹中的自动化服务器已知的问题。例如对于居住在是 Files\SomeFolder 服务器可能无法启动 CreateObject 调用的过程中,如果名为是 Stuff\SomeFolder 在系统上有另一个文件夹。有关详细的信息,请参阅以下知识库文章:有关此问题以及解决方法的步骤的其他信息它,单击以下文章编号,以查看 Microsoft 知识库中相应的文章:
    185126错误: COM/OLE 服务器无法在 Windows NT 4.0 上开始

重新安装 Office

如果上述步骤均无法帮助解决问题,请考虑卸载并重新安装 Office。Microsoft 建议您首先,卸载现有版本,并从原始安装盘重新安装。

要删除项目的完整列表,请参阅下列知识库文章:
219423OFF2000: 如何完全删除 Microsoft Office 2000
158658若要完全删除 Microsoft Office 97 OFF97: 如何

参考

有关疑难解答"429"错误消息的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
240377HOWTO: 确保正确安装 Jet 3.5 (部件我)
有关 Microsoft Office 自动化的示例代码和最新信息,请参阅 Microsoft 联机支持网站,网址如下:
http://support.microsoft.com/ofd

属性

文章编号: 244264 - 最后修改: 2007年5月11日 - 修订: 6.2
这篇文章中的信息适用于:
  • Microsoft Excel 2000 标准版
  • Microsoft Visual Basic 5.0 专业版
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic 5.0 企业版
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 标准版
  • Microsoft Access 2000 标准版
  • Microsoft Access 97 标准版
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 标准版
  • Microsoft Excel 97 标准版
  • Microsoft Office FrontPage 2003
  • Microsoft FrontPage 2002 标准版
  • Microsoft FrontPage 2000 标准版
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 标准版
  • Microsoft Outlook 2000
  • Microsoft Outlook 97 标准版
  • Microsoft Outlook 98 标准版
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 标准版
  • Microsoft PowerPoint 2000 标准版
  • Microsoft PowerPoint 97 标准版
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 标准版
  • Microsoft Word 2000 标准版
  • Microsoft Word 97 标准版
关键字:?
kbmt kbautomation kbfaq kbinfo KB244264 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 244264
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com