乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 求助 关于<em>AutoCAD</em> VBA调用<em>excel</e

求助 关于<em>AutoCAD</em> VBA调用<em>excel</e

作者:乔山办公网日期:

返回目录:excel表格制作


  不能启动此对象的源应用程序

案例:

某公司有文员使用CAD2006划图然后将图纸复制粘贴到excel 2007当中,因公司发展需要,把CAD2006升级到CAD2008版本后,excel2007中原先做好的图纸文档打不开,会提示“e79fa5e98193e58685e5aeb9332不能启动此对象的源应用程序”,图例:

原因:

这是因为不同版本的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中得到支持。

 

然后就可正常打开了。



试试下面这种:

Option Explicit

Sub test()
    Dim xl, xb
    Set xl = CreateObject("Excel.Application")
    xl.Visible = False
    Set xb = xl.workbooks.Open("要打开的工作簿路径")
    xb.Sheets("要打开的工作表名字").Range("a1") = "test"'给单元格A1写入数据
    xb.Save
    xb.Close
    xl.Quit
    Set xb = Nothing
    Set xl = Nothing
End Sub

4. 现在还不完美,因为字的大小和你的图没有统一,现在我们来解决这个问题。  选择表格中的一个文字,看一下他的高度,用windows自带的计算器计算一下它和你想要的字的比例差多少,用scale缩放的你想要的文字大小。如果你还想设制文字的宽度系数,为了制作出和你在excel里面看到对齐方式一样的数据,那就把表格先定义为块,插入块的时候选择x方向的系数,就是文字的宽度系数。

我知道直接把EXCEL的表格复制、粘贴到AUTOCAD中;可以实现两个软件的联通。在CAD中双击复制来的表格即可打开EXCEL进行编辑。希望这个能帮到你。

相关阅读

  • 求助 关于<em>AutoCAD</em> VBA调用<em>excel</e

  • 乔山办公网excel表格制作
  •   不能启动此对象的源应用程序案例:某公司有文员使用CAD2006划图然后将图纸复制粘贴到excel 2007当中,因公司发展需要,把CAD2006升级到CAD2008版本后,excel2007中原先做好的图纸文档打
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网