C# Office COM 组件注册表修复方法
报错信息
无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型
无法将为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型
无法将为“Microsoft.Office.Interop.PowerPoint.ApplicationClass”的 COM 对象强制转换为接口类型
报错原因
安装多个版本Office之后没完全卸载,注册表混乱导致报错。
Word
定位到:
计算机\HKEY_CLASSES_ROOT\Interface\{00020970-0000-0000-C000-000000000046}\TypeLib
,查看Version键值:Office版本 COM组件 Key Version Office 2003 Microsoft Word 11.0 Object Library {00020905-0000-0000-C000-000000000046} 8.3 Office 2007 Microsoft Word 12.0 Object Library {00020905-0000-0000-C000-000000000046} 8.4 Office 2010 Microsoft Word 14.0 Object Library {00020905-0000-0000-C000-000000000046} 8.5 Office 2013 Microsoft Word 15.0 Object Library {00020905-0000-0000-C000-000000000046} 8.6 Office 2016 之后版本 Microsoft Word 16.0 Object Library {00020905-0000-0000-C000-000000000046} 8.7 定位到:
计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{00020905-0000-0000-C000-000000000046}
,展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。定位到:
计算机\HKEY_CLASSES_ROOT\TypeLib\{00020905-0000-0000-C000-000000000046}
,展开并查看信息。在此注册表项中,应该只有 1 个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。
Excel
定位到:
计算机\HKEY_CLASSES_ROOT\Interface\{000208D5-0000-0000-C000-000000000046}\TypeLib
,查看Version键值:Office版本 COM组件 Key Version Office 2003 Microsoft Excel 11.0 Object Library {00020813-0000-0000-C000-000000000046} 1.5 Office 2007 Microsoft Excel 12.0 Object Library {00020813-0000-0000-C000-000000000046} 1.6 Office 2010 Microsoft Excel 14.0 Object Library {00020813-0000-0000-C000-000000000046} 1.7 Office 2013 Microsoft Excel 15.0 Object Library {00020813-0000-0000-C000-000000000046} 1.8 Office 2016 之后版本 Microsoft Excel 16.0 Object Library {00020813-0000-0000-C000-000000000046} 1.9 定位到:
计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{00020813-0000-0000-C000-000000000046}
,展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。定位到:
计算机\HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}
,展开并查看信息。在此注册表项中,应该只有 1 个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。
PowerPoint
定位到:
计算机\HKEY_CLASSES_ROOT\Interface\{91493442-5A91-11CF-8700-00AA0060263B}\TypeLib
,查看Version键值:Office版本 COM组件 Key Version Office 2003 Microsoft PowerPoint 11.0 Object Library {00020813-0000-0000-C000-000000000046} 2.8 Office 2007 Microsoft PowerPoint 12.0 Object Library {00020813-0000-0000-C000-000000000046} 2.9 Office 2010 Microsoft PowerPoint 14.0 Object Library {00020813-0000-0000-C000-000000000046} 2.a Office 2013 Microsoft PowerPoint 15.0 Object Library {00020813-0000-0000-C000-000000000046} 2.b Office 2016 之后版本 Microsoft PowerPoint 16.0 Object Library {00020813-0000-0000-C000-000000000046} 2.c 定位到:
计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{91493440-5A91-11CF-8700-00AA0060263B}
,展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。定位到:
计算机\HKEY_CLASSES_ROOT\TypeLib\{91493440-5A91-11CF-8700-00AA0060263B}
,展开并查看信息。在此注册表项中,应该只有 1 个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。
Office
查看注册表项:计算机\HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
项名称 | Office版本 | (默认)名称 |
---|---|---|
2.3 | Office 2003 | Microsoft Office 11.0 Object Library |
2.4 | Office 2007 | Microsoft Office 12.0 Object Library |
2.5 | Office 2010 | Microsoft Office 14.0 Object Library |
2.7 | Office 2013 | Microsoft Office 15.0 Object Library |
2.8 | Office 2016 之后版本 | Microsoft Office 16.0 Object Library |
与下列Interface中Version的值对应:计算机\HKEY_CLASSES_ROOT\WOW6432Node\Interface\{000C0339-0000-0000-C000-000000000046}\TypeLib
计算机\HKEY_CLASSES_ROOT\WOW6432Node\Interface\{000C033A-0000-0000-C000-000000000046}\TypeLib