excel不能启动此对象的源应用程序
2015-05-30 13:43
686 查看
不能启动此对象的源应用程序
案例:
某公司有文员使用CAD2006划图然后将图纸复制粘贴到excel 2007当中,因公司发展需要,把CAD2006升级到CAD2008版本后,excel2007中原先做好的图纸文档打不开,会提示“不能启动此对象的源应用程序”,图例:
原因:
这是因为不同版本的AutoCAD使用不同的注册表项来连接OLE对象的服务器程序。当对应版本的软件没有安装时,容器程序便无法找到OLE服务程序。 本例中电脑安装的是AutoCAD2008的版本,而图纸是用AutoCAD2006画的,本机默认的图纸打开程序为CAD2008,而不是CAD2006,缺少2006对2008的OLE转换对象,即AutoCAD.Drawing.16不能向AutoCAD.Drawing.17转换。
解决方法:
由于AutoCAD具有向下兼容性,因此可以通过注册表项的自动转向方式让旧的OLE对象去使用新的服务器程序,即通过修改注册表实现AutoCAD.Drawing.16向AutoCAD.Drawing.17的转换。
我们先来了解一下AutoCAD各版本的OLE对象在注册表中的SID值是多少
AutoCAD 2007/2008的OLECLSID
{7AABBB95-79BE-4C0F-8024-EB6AF271231C}
AutoCAD 2004,05,06的OLECLSID
{8E75D913-3D21-11d2-85C4-080009A0C626}
AutoCAD 2000,2000i,2002的OLECLSID
{8E75D913-3D21-11d2-85C4-080009A0C626}
各版本的OLESID其时很容易查到,当在excel当中点击图纸时会显示图纸调用的OLE对象版本,如图:
在图中我们可以看到该案例中能正常打开的图像调用的OLE对象为
AutoCAD.Drawing.17(AutoCAD 2008版本使用的OLESID),这时我们打开注册表编辑器
查看HKEY_CLASSES_ROOT\[DWG格式号]\CLSID就能找到对应的DWG文件格式的CLSID。即:
*AutoCAD.Drawing.17格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.17\CLSID;
附各版本对应的OLESID
*AutoCAD 2000/2000i/20002格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.15\CLSID;
*AutoCAD 2004/2005/2006格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.16\CLSID;
*AutoCAD2007格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.17\CLSID,依此类推。
其他各版本AutoCAD查看OLESID码的方法大致相同。
当知道了现在本机安装的AutoCAD(案例中使用的是AutoCAD 2008)程序版本和要读的文件版本后,可以通过下面的注册表添加语句添加一个自动转换项。
Windows RegistryEditor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{8E75D913-3D21-11d2-85C4-080009A0C626}\Autoconvertto]
@="{7AABBB95-79BE-4C0F-8024-EB6AF271231C}"
上面的例子是使AutoCAD.Drawing.16生成的OLE对象在AutoCAD2008中得到支持。
然后就可正常打开了。
附件:http://down.51cto.com/data/2365747
案例:
某公司有文员使用CAD2006划图然后将图纸复制粘贴到excel 2007当中,因公司发展需要,把CAD2006升级到CAD2008版本后,excel2007中原先做好的图纸文档打不开,会提示“不能启动此对象的源应用程序”,图例:
原因:
这是因为不同版本的AutoCAD使用不同的注册表项来连接OLE对象的服务器程序。当对应版本的软件没有安装时,容器程序便无法找到OLE服务程序。 本例中电脑安装的是AutoCAD2008的版本,而图纸是用AutoCAD2006画的,本机默认的图纸打开程序为CAD2008,而不是CAD2006,缺少2006对2008的OLE转换对象,即AutoCAD.Drawing.16不能向AutoCAD.Drawing.17转换。
解决方法:
由于AutoCAD具有向下兼容性,因此可以通过注册表项的自动转向方式让旧的OLE对象去使用新的服务器程序,即通过修改注册表实现AutoCAD.Drawing.16向AutoCAD.Drawing.17的转换。
我们先来了解一下AutoCAD各版本的OLE对象在注册表中的SID值是多少
AutoCAD 2007/2008的OLECLSID
{7AABBB95-79BE-4C0F-8024-EB6AF271231C}
AutoCAD 2004,05,06的OLECLSID
{8E75D913-3D21-11d2-85C4-080009A0C626}
AutoCAD 2000,2000i,2002的OLECLSID
{8E75D913-3D21-11d2-85C4-080009A0C626}
各版本的OLESID其时很容易查到,当在excel当中点击图纸时会显示图纸调用的OLE对象版本,如图:
在图中我们可以看到该案例中能正常打开的图像调用的OLE对象为
AutoCAD.Drawing.17(AutoCAD 2008版本使用的OLESID),这时我们打开注册表编辑器
查看HKEY_CLASSES_ROOT\[DWG格式号]\CLSID就能找到对应的DWG文件格式的CLSID。即:
*AutoCAD.Drawing.17格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.17\CLSID;
附各版本对应的OLESID
*AutoCAD 2000/2000i/20002格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.15\CLSID;
*AutoCAD 2004/2005/2006格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.16\CLSID;
*AutoCAD2007格式DWG文件的CLSID可查看
HKEY_CLASSES_ROOT\AutoCAD.Drawing.17\CLSID,依此类推。
其他各版本AutoCAD查看OLESID码的方法大致相同。
当知道了现在本机安装的AutoCAD(案例中使用的是AutoCAD 2008)程序版本和要读的文件版本后,可以通过下面的注册表添加语句添加一个自动转换项。
Windows RegistryEditor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{8E75D913-3D21-11d2-85C4-080009A0C626}\Autoconvertto]
@="{7AABBB95-79BE-4C0F-8024-EB6AF271231C}"
上面的例子是使AutoCAD.Drawing.16生成的OLE对象在AutoCAD2008中得到支持。
然后就可正常打开了。
附件:http://down.51cto.com/data/2365747
相关文章推荐
- 使用regini.exe修改注册表命令
- 统计java代码行数
- XP下通过 命令行/批处理 修改环境变量
- Fedora 9 系统下ALSA声卡驱动下载及安装方法
- 你选对autocad了吗?
- AutoCAD打印预览时显示空白
- 禁用/开启USB的批处理命令
- CAD Import .NET支持AutoCAD DWG 2013
- 开篇:AutoCAD ObjectARX 之三金开发 -- 介绍
- ObjectARX 二次开发之准备 - AutoCAD2014
- C# autocad二次开发,netload命令异常System.NotSupportedException
- 利用python控制Autocad:pyautocad
- CAD Import .NET支持AutoCAD DWG 2013
- AUTOCAD的dwg文件如何转换为pdf文件?
- AutoCAD2015 优化设置方案
- VS2010 调试AUTOCAD窗体事件进不去断点
- VB外部调用AutoCAD
- SAP GUI中创建的快捷方式直接保存密码方法介绍
- 批处理(.bat)修改注册表值(递增)的解决办法
- AutoCAD视口及布局的说明