报错信息

无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型
无法将为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型
无法将为“Microsoft.Office.Interop.PowerPoint.ApplicationClass”的 COM 对象强制转换为接口类型

报错原因

安装多个版本Office之后没完全卸载,注册表混乱导致报错。

Word

  1. 定位到:计算机\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
  2. 定位到:计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{00020905-0000-0000-C000-000000000046},展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。

  3. 定位到:计算机\HKEY_CLASSES_ROOT\TypeLib\{00020905-0000-0000-C000-000000000046},展开并查看信息。在此注册表项中,应该只有 1 个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。

Excel

  1. 定位到:计算机\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
  2. 定位到:计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{00020813-0000-0000-C000-000000000046},展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。

  3. 定位到:计算机\HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046},展开并查看信息。在此注册表项中,应该只有 1 个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。

PowerPoint

  1. 定位到:计算机\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
  2. 定位到:计算机\HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\{91493440-5A91-11CF-8700-00AA0060263B},展开并查看信息。在此注册表项中,应该只有 1个子项,并且它应该与之前找到的Version相同。如果此项包含多个子项,则应将其从注册表中删除。

  3. 定位到:计算机\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