首页 > 代码库 > 修复Office不能嵌入Word和Excel对象的故障

修复Office不能嵌入Word和Excel对象的故障

故障描述:
用户原来安装的是WPS,因为和单位某些业务系统不兼容,卸载掉后换装Office2007,结果在Word里插入Excel对象会跳出下边的提示:

wKiom1O4uwPiO3u0AACOOBdPsSY167.jpg

在Powerpoint里插入Excel对象会跳出下边的提示:

wKioL1O4utSTnRFkAACJLHVU908212.jpg

注意看在Word里插入Excel对象时有“ET”字样,这就确定了绝对是WPS导致的

 

解决:
网上搜索了很多方法,都无法解决。

按照错误提示,猜想可能是注册表中某些值还是WPS的,没有改过来导致的,于是去注册表中搜索,发现:
HKEY_CLASSES_ROOT\CLSID\{00020810-0000-0000-C000-000000000046}到HKEY_CLASSES_ROOT\CLSID\{00020833-0000-0000-C000-000000000046}是插入Excel对象需要提供的一些数据,比如图标、文件后缀名、文件打开程序等
HKEY_CLASSES_ROOT\CLSID\{000209FE-0000-0000-C000-000000000046}到HKEY_CLASSES_ROOT\CLSID\{00020907-0000-0000-C000-000000000046}是插入Word对象需要提供的一些数据

其实这些注册表项就是Office插入“对象”列表中显示的内容。也就是下图红框中的内容

wKioL1O4vLPxgu4EAAF26kfO0bQ193.jpg

下边列举出其中一个插入.xlsx文件对象相关注册表键值

[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}]
@="Microsoft Office Excel 工作表"
"IPersistStorageType"=dword:00000002
"MainPartContentType"="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\AuxUserType]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\AuxUserType\2]
@="工作表"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\AuxUserType\3]
@="Microsoft Office Excel 12"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Conversion]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Conversion\Readable]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Conversion\Readable\Main]
@="ExcelML12,ExcelWorksheet,Biff12,Biff8"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Conversion\Readwritable]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Conversion\Readwritable\Main]
@="ExcelML12,Biff12,Biff8"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\DefaultFile]
@="ExcelML12"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet\0]
@="3,1,32,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet\1]
@="2,1,16,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet\2]
@="1,1,1,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet\3]
@="NotesDocInfo,1,1,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DataFormats\GetSet\4]
@="NoteshNote,-1,1,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DefaultExtension]
@=".xlsx, Excel Workbook (*.xlsx)"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DefaultIcon]
@="C:\\WINDOWS\\Installer\\{90120000-0030-0000-0000-0000000FF1CE}\\xlicons.exe,1"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\DocObject]
@="16"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Implemented Categories]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Implemented Categories\{000C0118-0000-0000-C000-000000000046}]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\InprocHandler32]
@="ole32.dll"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Insertable]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\LocalServer]
@="C:\\PROGRA~1\\MICROS~2\\Office12\\EXCEL.EXE"
"LocalServer"=hex(7):76,00,55,00,70,00,41,00,56,00,58,00,21,00,21,00,21,00,21,  00,21,00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,45,00,58,00,  43,00,45,00,4c,00,46,00,69,00,6c,00,65,00,73,00,3e,00,74,00,57,00,7b,00,7e,  00,24,00,34,00,51,00,5d,00,63,00,40,00,49,00,49,00,3d,00,6c,00,32,00,78,00,  61,00,54,00,4f,00,35,00,00,00,00,00
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\LocalServer32]
@="C:\\PROGRA~1\\MICROS~2\\Office12\\EXCEL.EXE"
"LocalServer32"=hex(7):76,00,55,00,70,00,41,00,56,00,58,00,21,00,21,00,21,00,  21,00,21,00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,45,00,58,  00,43,00,45,00,4c,00,46,00,69,00,6c,00,65,00,73,00,3e,00,74,00,57,00,7b,00,  7e,00,24,00,34,00,51,00,5d,00,63,00,40,00,49,00,49,00,3d,00,6c,00,32,00,78,  00,61,00,54,00,4f,00,35,00,00,00,00,00
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\MiscStatus]
@="0"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\OfficeCompliant]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Printable]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\ProgID]
@="Excel.Sheet.12"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Typelib]
@="{00020813-0000-0000-C000-000000000046}"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Verb]
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Verb\0]
@="编辑(&E),0,2"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Verb\1]
@="打开(&O),0,2"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\Version]
@="1.6"
[HKEY_CLASSES_ROOT\CLSID\{00020830-0000-0000-C000-000000000046}\VersionIndependentProgID]
@="Excel.Sheet"

这上边最重要的其实就是LocalServer32和LocalServer,但光改这2个值是没用的,因为其他值都是有关联的。所以从正常电脑的注册表中导出这些相关项,删除故障电脑注册表中这些相关项,将正常电脑的REG导入故障电脑中,问题解决。
需要注意的是:必须要删除再导入,否则还是有错误,因为WPS加入了多余的键值,不删除直接导入这些WPS键值还是会导致错误提示

本文出自 “sanshow的博客” 博客,请务必保留此出处http://lzlutao.blog.51cto.com/102948/1434978