转 : https://zhuanlan.zhihu.com/p/378028335
Win10企业版64位使用CreateObject(Excel.Application)出错解决方法大全
出错症状及错误提示:
Win10企业版64位使用CreateObject(Excel.Application)出错,提示出错号码 429 无法创建Activex对象,或出错信息: Getobject(,“excel.application”) 的使用时总是无法获取打开着的EXCEL对象 报错: err.description ActiveX 部件无法创建对象 err.number 429
解决办法
- 在命令行使用dcomcnfg 命令打开 组件服务
或 开始→设置→控制面版→管理工具→组件服务→计算机→我的电脑→DCOM配置
则进入COM组件配置界面,选择Microsoft Excel后点击属性按钮,安全性 选卡那里将三个选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器
也可在打开的对话框中添加 “Internet来宾用户”(通常是IUSR_机器名),访问类型设为“完全控制”
如还不行将 “常规” 选项卡中的 “身份验证级别” 设为 “无”。
如还不行将 “身份标识” 选项卡中的用户设为 “交互式用户” 。
点击“应用”之后,关闭属性页和 DCOM 配置程序。配置完成
2. 如果是64位可能直接打开找不到Microsoft Excel这一项,需要按下面方法解决:
word、excel是32位的组件,当用户64位系统在运行窗口中输入dcomcnfg命令时,在打开的组件服务管理窗口,是找不到Microsoft Excel、word程序的
需要 打开32位dcom组件的方法:在“运行”窗口中输入comexp.msc -32 来打开32位的组件服务,就可看到excel组件了。
我是按照上述方法解决的!
网上其它解决办法
一、64位机器上 DOM 找不到MicrosoftExcelApplication的解决方案(作者:朝扬) :
64位机器上 DOM 找不到MicrosoftExcelApplication的解决方案及调用检索COM 类工厂中 CLSID 为...错误解决方案
第一种方法:
1.由於Dcomcnfg是一個32位和配置,在64系統下並不能被完全支持,因此需要对WIN2008 X64系統进行DCOM配置,操作步骤如下:
1.1运行:mmc -32
1.2在菜單中选择File->Add/Remove Snap
添加Component Services,然後在Component Services下找到Excel後再進行配置,就和32位系統一樣可以看到Microsoft Excel Appliction 组件了。
2.由于用户没有操作excel的权限,需要通过如下操作对 Microsoft Excel Appliction 进行授权。
2.1运行:dcomcnfg.exe
2.2"组件服务"- >"计算机"- >"我的电脑"- >"DCOM配置"->找到word->属性->"标识"标签,选择"交互式用户"
2.3->安全"标签"->在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加 一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
2.4->"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限. 这样,我们便配置好了相应的Excel的DCOM权限.
第二种方法(指定用户来运行):
<system.web>
<identity impersonate="true" userName="administrator" password="186"/> //创建用户名
</system.web>
二、其它DCOM 的配置步骤:
1、在应用程序列表中找到并选择上“Microsoft Excel 应用程序”,点击“属性”按钮。
2、在弹出的属性设置窗口中,将 “常规” 选项卡中的 “身份验证级别” 设为 “无”。
3、切换到 “安全性” 标签页,点选 “使用自定义配置权限”,点击 “编辑”。
4、在打开的窗口中添加 “Internet来宾用户” ,访问类型设为“完全控制”。
5、切换到“身份标识” 标签页,选择 “交互式用户”,点击“应用”后,关闭属性页和 DCOM 配置程序即可。
三、另一种解决办法(作者:葉飞纷飞)
1. 在运行中输入:regedit,进入注册表编辑器,查看HKEY_LOCAL_MACHINE\Software\Microsoft\Office下是否有excel、word等其他的注册表,若没有进行第二步。
2. 查看HKEY_CLASSES_ROOT\AppID\下是否有{00020812-0000-0000-C000-000000000046},这个是excel注册键,若没有则DCOM配置是找不到Microsoft Excel Appliction的。(这个取决于每个人系统,有些安装office之后马上就会显示有这个键,但是有些机子没有显示)
3. 手动导出该键:
我所使用解决办法是:在另一台已安装相同版本的office的win8 64位机上找到HKEY_CLASSES_ROOT\AppID\下是否有{00020812-0000-0000-C000-000000000046} 右击,点击“导出”,生成.reg后缀名的文件后,再将其复制到自己的电脑上(即要进行DCOM配置找不到Microsoft Excel Appliction的电脑上),最后双击此注册文件,自动导入注册表中了。
再去HKEY_CLASSES_ROOT\AppID\下查看,这时就会有{00020812-0000-0000-C000-000000000046}了。
4.最后,输入MMC -32:文件——>添加/删除单元管理——>选择最后一个即组件服务——>添加——>确定——>双击组件服务——>计算机——>我的电脑——>DCOM配置,这时会发现能找到Microsoft Excel Appliction。
四、Csdn找到其它解决办法(找不到原作者名)
检查自动化服务器
发生 CreateObject 或 New 相关错误的最常见原因是服务器应用程序有问题。通常,应用程序的配置或安装会引起该问题。要解决问题,请使用以下过程:
- 验证您要自动执行的 Office 应用程序安装在本地计算机上。确保可以运行该应用程序。要这样做,依次单击“开始”和“运行”,然后尝试运行该应用程序。如果无法手动运行该应用程序,则该应用程序将不能以自动化方式工作。
- 重新注册该应用程序,如下所示:
- 单击“开始”,然后单击“运行”。
- 在“运行”对话框中键入服务器路径,然后将 /RegServer 添加到行尾。
- 单击“确定”。
应用程序以静默方式运行。应用程序作为 COM 服务器重新注册。
如果是因为缺少某个注册表项而发生问题,则以上步骤通常能纠正问题。
- 在 CLSID 下检查要自动执行的应用程序的 LocalServer32 项。确保 LocalServer32 项指向该应用程序的正确位置。确保路径名称为短路径 (DOS 8.3) 格式。您不必通过使用短路径名称来注册服务器。但是,在一些系统上,包含嵌入空格的长路径名称可能导致问题。
要检查为服务器存储的路径项,请如下所示启动 Windows 注册表编辑器:
- 单击“开始”,然后单击“运行”。
- 键入 regedit,然后单击“确定”。
- 移到 HKEY_CLASSES_ROOT\CLSID 项。
系统上注册的自动化服务器的 CLSID 位于此项下。 - 使用 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} |
- 确保路径匹配文件的实际位置。
注意:短路径名称可能看起来正确,而实际上并不正确。例如,Office 和 Microsoft Internet Explorer(如果它们安装在其默认位置)的短路径均类似于 C:\PROGRA~1\MICROS~X\(其中 X 是数字)。此名称初看起来不像是短路径名称。
要确定路径是否正确,请执行下列步骤:
- 单击“开始”,然后单击“运行”。
- 从注册表中复制值,然后在“运行”对话框中粘贴值。
注意:在运行应用程序之前删除 /automation 开关。 - 单击“确定”。
- 验证应用程序运行正常。
如果在单击“确定”后应用程序能够运行,则正确注册了服务器。如果在单击“确定”后应用程序不运行,则用正确的路径替换 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 服务器可能无法正确加载。
检查系统
系统配置也可能会导致进程外 COM 服务器创建问题。要解决问题,请在发生错误的系统上使用以下过程:
- 确定问题是否出现在任何进程外服务器上。如果您有使用特定 COM 服务器的应用程序(例如 Word),请测试其他进程外服务器,以确保问题不是出在 COM 层本身上。如果无法在计算机上创建进程外 COM 服务器,则按照本文中的“重新安装 Microsoft Office”一节所述重新安装 OLE 系统文件,或者重新安装操作系统以解决问题。
- 检查管理自动化的 OLE 系统文件的版本号。这些文件通常作为集合安装。这些文件必须匹配内部版本号。不正确配置的安装实用程序可能会错误地分别安装这些文件。这会导致文件不匹配。为避免出现自动化问题,请检查文件以确保文件内部版本匹配。
自动化文件位于 Windows\System32 目录或 Winnt\System32 目录中。检查以下文件。
文件名 | 版本 | 修改日期 |
Asycfilt.dll | 3.50.5014 | 2002 年 9 月 04 日 |
Oleaut32.dll | 3.50.5016 | 2002 年 9 月 04 日 |
Olepro32.dll | 5.0.5014 | 2002 年 9 月 04 日 |
Stdole2.tlb | 3.0.5014 | 2002 年 9 月 04 日 |
要检查文件版本,请在 Windows 资源管理器中右键单击文件,然后单击“属性”。注意文件版本的最后四位数(内部版本号)和文件的上次修改日期。确保这些值对于所有自动化文件均相同。
注意:较早的版本号和较早的日期是从安装了 Office 2003 的 Windows Server 2003 计算机中检索的。这些编号和日期只用作示例。您的值可能不同。
如果文件不匹配内部版本号或修改日期,请下载更新自动化文件的自解压实用程序。
有关如何访问运行时文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:235420 VBRun60sp4.exe 安装 Visual Basic 6.0 SP4 运行时文件
- 对于可能限制在 Office 应用程序中运行代码的第三方应用程序,使用系统配置实用程序 (Msconfig.exe) 来检查服务和系统的启动。 有关 Msconfig.exe 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:310560 如何在 Windows XP 中使用系统配置实用程序来排除故障
例如,Outlook 自动化应用程序可能因为您正在运行具有“脚本阻止程序”功能的防病毒程序而失败。
注意:请仅在未连接到网络的测试系统上暂时禁用防病毒程序。
或者,在 Outlook 中执行下列步骤以禁用第三方加载项:
- 在“工具”菜单上,单击“选项”。
- 在“其他”选项卡上,单击“高级选项”。
- 在“高级选项”对话框中,单击“加载项管理器”。
- 单击任何第三方加载项的复选框以清除它。
- 重新启动 Outlook。
如果此方法解决问题,请与第三方防病毒供应商联系,了解有关更新防病毒程序的更多信息。
五、使用管理员身份及兼容模式运行你的程序
六、重新安装 Office
如果前面任何过程均未能解决问题,则删除 Office,然后重新安装 Office。Microsoft 建议您首先删除现有的版本,然后通过使用原始安装盘重新安装 Office。
另再补充一个方法(作者:CSDN 雪落雨伤)
在dcomcnfg打开的dcom配置 右键"Microsoft Excel Application" 点击“属性” 可看到 有个“本地路径”. 可能这里的路径指向的是一个错误的路径,可把这个路径复制下来,在资料管理器中验证一下是否正确,如果不正确,在路径这里是无法修改的. 要按如下方法修改
在运行中输入:regedit 进入到注册列表.
6.按CTRL+F 来查找刚才咱们找到的那个路径.
可以看到:应用程序ID是可以对上的.我们现在找到 咱们OFFICE里面EXCEL可以用的正确路径. 也就是EXCEL.EXE可以打开的路径. 我这里的正确路径是C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE
然后将这个注册表编辑器中查找到的这个注册表修改一下.
注意: 路径后面一定要加上 /automation 示例:C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE /automation
修改完成后就点击确定.
然后查看Microsoft Excel Application的属性路径是否修复成正确的路径.
如果没有的话.可以接着在注册列表中查找 之前错误的路径. 因为还有其他错误的路径导致.我们无法调用端口.只需要都修改成OFFICE中的可以使用的端口就好了.
完成后.就可以再次尝试调用EXCEL.application了.