概要

当您使用New运算符或无论函数在 Microsoft Visual Basic 创建 Microsoft Office 应用程序的实例时,可能会收到以下错误消息:

运行时错误 '429': ActiveX 组件无法创建对象

请求的自动化对象不能由 COM 创建,因此 Visual Basic 到不可用时,将发生此错误。该错误通常出现某些计算机而不是其他。

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

详细信息

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

项目以后为您提供了一些实用的建议,对此错误进行疑难解答时使用 Office 应用程序。其中某些信息还适用于 Office COM 服务器,但这篇文章假定您要自动化 Microsoft Office。

检查代码

寻找该问题的第一去处将是代码中。您可以诊断错误之前,您需要知道错误发生的位置。请尝试缩小其范围下一行代码。

当查找失败的代码时,请尝试执行以下:

  • 确保该代码使用显式的对象创建。任何问题则更容易发现和识别问题缩小到单个操作。例如,不执行下列操作:

    Application.Documents.Add 'DON'T USE THIS!!

    或:

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add

    这两种方法使用隐式对象的创建。直到至少一次调用变量未启动 Microsoft 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 应用程序的实例,而不是新建使用无论。无论更紧密地映射到大多数的 Visual C++ 客户端所使用的创建过程,并允许在服务器的 CLSID 版本之间可能发生更改。无论使用早期绑定和后期绑定对象。

  • 验证程序 Id 的字符串传递给无论是否正确,以及它是独立的版本 (而不是"Excel.Application.8",即使用"Excel.Application")。它可能发生故障的系统具有更旧或更新版本的 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

    使用消息框和行号的组合跟踪错误。

  • 请尝试使用后期绑定 (即模糊 oWordApp As Object)。早期绑定的对象要求他们自定义的接口,以跨进程边界进行封送。如果封送处理期间无论或新建的自定义接口出现问题,则会出现错误 429。后期绑定的对象使用系统定义的接口 (IDispatch) 不需要自定义代理服务器以进行封送处理。请尝试使用后期绑定的对象看到这样的区别。

    如果仅在对象是早期绑定的变量时,将出现该问题,该问题与服务器应用程序,并通常可以通过重新安装应用程序 (请参阅后面) 来解决问题。

  • 如果您正在从 ASP 或 MTS 组件自动化,而不是Server.CreateObject()使用无论。使用Server.CreateObject将实例化 Office 应用程序标识下 MTS 包的已知会导致 Microsoft Office 的问题。

检查自动化服务器

无论或新建与错误的最常见原因是服务器应用程序本身的问题。通常情况下,这些问题都是与配置或应用程序的安装程序。下面是一些要检查的项目:

  • 检查 Microsoft Office 自动化所需的应用程序已安装在本地计算机上,并确保您可以从开始启动应用程序,然后运行对话框。如果无法手动启动该程序,它不会通过自动化。

  • 重新注册该应用程序,通过在开始键入服务器的路径,然后运行对话框中,然后将/RegServer附加到行的结尾。按确定。这应以静默方式运行应用程序并重新将其注册为 COM 服务器。如果缺少注册表项是问题,这通常改正它。

  • 检查要自动化的应用程序的 LocalServer32 键下的 CLSID。请确保它将指向正确的位置的应用程序,并确保正在短路径 (DOS 8.3) 格式的路径名称。虽然它并不要求一台服务器必须使用的短路径名称注册,包含嵌入的空格的长路径名据悉导致问题在某些系统上 (请参阅后面)。

    要检查服务器存储路径项,请在开始键入regedit启动 Windows 注册表编辑器,然后运行对话框中。定位到 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 模板 (字) 或文件夹的资源文件 (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 知识库中相应的文章:

    290887 VBRun60sp6.exe 安装 Visual Basic 6.0 SP6 运行时文件

  • Windows NT 4.0 具有启动自动化服务器包含在名称中,嵌入的空格和/或类似于其前 8 个字符完全相同的另一个文件夹的文件夹中存在一个已知的问题。例如,居住在 C:\Program Files\SomeFolder 的服务器可能无法启动无论调用期间,如果名为 C:\Program Stuff\SomeFolder 的系统上的另一个文件夹。有关详细信息,请参见下面的知识库文章:有关此问题和替代方法的步骤的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    185126错误: COM/OLE 服务器无法启动 Windows NT 4.0 上

重新安装 Microsoft Office

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

有关被移除的项的完整列表,请参阅下列知识库文章:

219423 OFF2000: 如何完全删除 Microsoft Office 2000年

158658 OFF97: 如何完全删除 Microsoft Office 97年

参考资料

有关"429"错误消息的疑难解答的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

240377如何: 确保正确地安装 Jet 3.5 (第 1 部分)
有关最新信息和有关 Microsoft Office 自动化代码示例,请参阅 Microsoft 联机支持站点:

http://support.microsoft.com/ofd

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×