不能不能起动此对象的源应用程序
案例:某公司有文员可以使用cad2006划图后再将图纸直接复制粘贴到excel2007当中,因公司发展必须,把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值是多少
autocad2007/2008的oleclsid
{7aabbb95-79be-4c0f-8024-eb6af271231c}
autocad2004,05,06的oleclsid{8e75d913-3d21-11d2-85c4-080009a0c626}
autocad2000,2000i,2002的oleclsid{8e75d913-3d21-11d2-85c4-080009a0c626}
各版本的olesid此时尚非常容易查到,当在excel当中直接点击图纸时会显示图纸内部函数的ole对象版本,如图:
在图中看到该案例中能算正常打开的图像动态链接库的ole对象为autocad.drawing.17(autocad2008版本建议使用的olesid),这时我们打开注册表编辑器
查找hkey_classes_root[dwg格式号]clsid就能找不到随机的dwg文件格式的clsid。即:*autocad.drawing.17格式dwg文件的clsid可打开系统hkey_classes_rootautocad.drawing.17clsid;
附各版本填写的olesid
*autocad2000/2000i/20002格式dwg文件的clsid可查找hkey_classes_rootautocad.drawing.15clsid;
*autocad2004/2005/2006格式dwg文件的clsid可查找hkey_classes_rootautocad.drawing.16clsid;*autocad2007格式dwg文件的clsid可查找hkey_classes_rootautocad.drawing.17clsid,类推。
其他各版本autocad查找olesid码的方法大致是一样的。
当清楚了现在本机安装的autocad(案例中在用的是autocad2008)程序版本和要读的文件版本后,可以通过下面的注册表先添加语句再添加一个自动启动转换项。
windowsregistryeditorversion5.00
[hkey_classes_rootclsid{8e75d913-3d21-11d2-85c4-080009a0c626}autoconvertto]
@{7aabbb95-79be-4c0f-8024-eb6af271231c}
上面的例子是使autocad.drawing.16生成的ole对象在autocad2008中得到支持。
那样的话就应该是可以不都正常然后打开了。
1.起动cad软件以后,在cad软件的新建任务的界面,再点击工具中的默认按钮。找不到并直接点击cad表格按钮。
2.进入表格的编辑页面,来正在在cad制图时先添加表格,我们是可以先你选是想的表格样式,在本例中就然后建议使用了默认样式。
3.选择好表格的样式以后,我们选择cad图纸中插入表格的。我们可以你选择委托再插入点,或则框选委托窗口来先添加表格。
4.最后来设置cad制图表格的列宽高度。将表格参数设置完毕,再点击确认按钮以后,就可以不顺利能完成在cad制图时直接添加表格。