在 Visual Basic 中,错误 429 的原因有多个。如果满足以下任何条件,则会发生此错误:
要查找错误的原因,需隔离问题。如果您在客户端计算机上收到错误 429,请使用以下信息来隔离和解决 Microsoft Office 应用程序中的错误。
注意:以下某些信息可能也适用于非 Office COM 服务器。但是,本文假定您要自动执行 Office 应用程序。
如果您发现一行可能导致问题的代码,请完成这些步骤:
• | 应用程序中出现错误。 |
• | 系统配置中出现错误。 |
• | 缺少某个组件。 |
• | 某个组件损坏。 |
注意:以下某些信息可能也适用于非 Office COM 服务器。但是,本文假定您要自动执行 Office 应用程序。
检查代码
<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 在解决错误之前,尝试隔离一行可能导致问题的代码。如果您发现一行可能导致问题的代码,请完成这些步骤:
• | 确保代码使用显式对象创建。 如果将问题缩窄到单个操作,则更易于确定问题。例如,寻找使用隐式对象创建的代码,如以下示例之一。 代码示例 1 代码示例 2 以上两个代码示例都使用了隐式对象创建。在至少调用变量一次之前,Microsoft Office Word 2003 不会启动。由于变量可能在程序的不同部分中被调用,因此可能难以找到问题。可能难以验证是在创建 Application 对象时还是在创建 Document 对象时导致问题。您可以改为进行显式调用以分别创建每个对象,如下所示。 当您进行显式调用以分别创建每个对象时,会更易于隔离问题。这样做也可能使代码更易于阅读。 |
• | 创建 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): 使用 MsgBox 函数和行号来跟踪错误。 |
• | 使用后期绑定,如下所示: 早期绑定对象要求跨进程边界封送它们的自定义接口。如果在 CreateObject 或 New 期间无法封送自定义接口,则会收到错误 429。后期绑定对象使用不需要封送自定义代理的 IDispatch 系统定义接口。使用后期绑定对象来验证此过程是否正确工作。如果只在对象被早期绑定时发生问题,则问题在服务器应用程序中。通常,可以如本文中的“检查自动化服务器”一节所述重新安装应用程序,以纠正问题。 |
检查自动化服务器
<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 发生 CreateObject 或 New 相关错误的最常见原因是服务器应用程序有问题。通常,应用程序的配置或安装会引起该问题。要解决问题,请使用以下过程:• | 验证您要自动执行的 Office 应用程序安装在本地计算机上。确保可以运行该应用程序。要这样做,依次单击“开始”和“运行”,然后尝试运行该应用程序。如果无法手动运行该应用程序,则该应用程序将不能以自动化方式工作。 | ||||||||||||||||||||||||||||||||
• | 重新注册该应用程序,如下所示:
| ||||||||||||||||||||||||||||||||
• | 在 CLSID 下检查要自动执行的应用程序的 LocalServer32 项。确保 LocalServer32 项指向该应用程序的正确位置。确保路径名称为短路径 (DOS 8.3) 格式。您不必通过使用短路径名称来注册服务器。但是,在一些系统上,包含嵌入空格的长路径名称可能导致问题。 要检查为服务器存储的路径项,请如下所示启动 Windows 注册表编辑器:
要确定路径是否正确,请执行下列步骤:
| ||||||||||||||||||||||||||||||||
• | 测试 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 目录中。检查以下文件。
注意:较早的版本号和较早的日期是从安装了 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 中执行下列步骤以禁用第三方加载项:
|