630051689 发表于 2008-7-27 21:34:00

如何用excel中的宏执行cad中的宏!跪求大虾赐教

<p>我想在excel中打开cad 并加载dvb 然后执行! 前面都没问题&nbsp; 就是到红色字体 <font color="#ee3d11">RunMacro</font> 那步 出不来</p><p>还望高人指点下</p><p>******************************以下excel中的代码</p><p>Private Sub CommandButton1_Click()</p><p>Dim cap As AutoCAD.AcadApplication</p><p>Dim caddoc As AcadDocument, mospace As AcadModelSpace</p><p>On Error Resume Next '忽略错误</p><p>&nbsp;&nbsp; Set cap = GetObject(, "Autocad.application")</p><p>If Err.Number &lt;&gt; 0 Then '如果 Excel 没有运行则</p><p>&nbsp; Err.Clear</p><p>&nbsp; Set cap = CreateObject("Autocad.application")<br/>&nbsp;&nbsp; <br/>End If</p><p>&nbsp; cap.Visible = True<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; </p><p>Set caddoc = cap.ActiveDocument</p><p><br/>Set mospace = caddoc.ModelSpace</p><p><br/>Dim dwgname As String, aada As Object</p><p>dwgname = "H:\试验表格\综合部分\数字驱动版\开料\主杆下料图模板.dwg"</p><p><br/>Set caddoc = cap.Documents.Open(dwgname)</p><p><br/>&nbsp;&nbsp;&nbsp; Dim FileName As String<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; FileName = "F:\gongzuo\My Draw\复件绘图模板\下料数据.dvb"<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; cap.LoadDVB FileName<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <font color="#ee3d11">cap.RunMacro ("caddoc.修改")</font></p><p>caddoc.Close<br/>cap.Quit<br/></p><p>end sub</p><p>*****************************************下面的是cad中的宏*************<br/>Sub 修改()<br/>&nbsp;&nbsp;&nbsp; Dim shuj(200, 1) As Variant<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim txrstring As String<br/>&nbsp;&nbsp;&nbsp;&nbsp; txtstring = InputBox("文件编号")<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; Open "d:\pc001\huitu\XIALIAO\" &amp; txtstring &amp; ".txt" For Input As #1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For n = 1 To 192<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Input #1, shuj(n, 0), shuj(n, 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp; Close #1<br/>&nbsp;&nbsp;&nbsp; Dim returnObj As AcadObject<br/>&nbsp;&nbsp;&nbsp; For Each returnObj In ThisDrawing.ModelSpace<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For n = 1 To 192<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If returnObj.Handle = shuj(n, 0) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; returnObj.TextString = shuj(n, 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp; MsgBox entObjectID<br/>End Sub</p><p></p><p></p>

兰州人 发表于 2008-7-28 12:29:00

<p>不太明白你的意思,一般是在CAD调用excel。</p><p>你的问题是跨平台运行,要想在excel中运行autocad,就直接在excel中,摸拟autocad VBA程序。</p><p>&nbsp;&nbsp; Dim FileName As String<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; FileName = "F:\gongzuo\My Draw\复件绘图模板\下料数据.dvb"<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; cap.LoadDVB FileName<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表示你已经在CAD中装载了vba的dvb&nbsp;文件。<br/>&nbsp;&nbsp; <font color="#ee3d11">cap.RunMacro ("caddoc.修改")--这条语句是否为excel的caption按钮定义设置。</font></p><p></p>

630051689 发表于 2008-7-28 19:07:00

<p>本来我是在 excel里 模拟cad vba程序 得</p><p>后来发现excel 中的vba&nbsp;是解释1句 执行1句 运行的太慢了</p><p>我就想&nbsp; 在CAD中装载dvb文件&nbsp; 然后执行dvb里的宏命令,在cad中运行话速度快很多。</p><p>装载成了 就是执行不了</p><p>&nbsp;RunMacro到底怎么用呢? 还是我少了哪步?</p><p></p>

兰州人 发表于 2008-7-29 14:20:00

<p>RunMacro没用过,在CAD中,调试程序常用的是-vbarun 文件名(.dvb)。</p><p>实在没明白,RunMacro在此处有何用途?谢谢。</p>

630051689 发表于 2008-7-29 22:39:00

<p>用sendcommand方法?</p><p>我 试 过 sendcommand&nbsp;方法 发送&nbsp;-vbarun&nbsp; 但是命令行提示我输入 宏名 我输入</p><p>&nbsp; "<font color="#cc7033">F:\主杆下料图模板.dwg!ThisDrawing.修改"&nbsp;&nbsp;&nbsp; 然后就提示找不到宏</font></p><p><font color="#cc7033">后来又把&nbsp; </font><font color="#000000">-vbarun&nbsp; "<font color="#cc7033">F:\主杆下料图模板.dwg!ThisDrawing.修改"&nbsp; 连着输&nbsp; 也不行</font></font></p><p>我就不知道哪错了!</p><p></p><p>能给个 -vbarun 得实例吗!!&nbsp; 谢谢了 </p><p>我忙了1礼拜了 也没找到&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 跨平台调用cad宏的办法</p><p>其他方式也行&nbsp; 最好上个例子&nbsp; 1小段就成</p><p>小弟涕零</p>

630051689 发表于 2008-7-29 23:04:00

<p></p><p></p><p></p><p>我想用sendcommad 方式都不行</p><p>哪错了呢?</p>

630051689 发表于 2008-7-29 23:23:00

<p></p><p>以下是网上发现出现最多的1种方法 ,但是红色字部分看不懂 高人请指点我把</p><p></p><p>二、执行VBA宏 <br/>&nbsp; &nbsp; 要执行工程中的宏,有下面三种方法: <br/>&nbsp; &nbsp; 1.从工具条或者下拉菜单执行VBA宏 <br/>&nbsp; &nbsp; 用户可以从AutoCAD的工具条或者下拉菜单来执行VBA宏,<font color="#f73809">这需要修改该工具条按钮或者下拉菜单项的Macro属性。Macro扇性必须设定等于: <br/>&nbsp; &nbsp; &nbsp; &nbsp; -VBRUN Filename.dvb!ProjectName.MacroName <br/></font>&nbsp; &nbsp; 其中Filename.dvb为工程的文件名,ProjectName为工程的名称,MacroName则是要执行的宏的名称,VBARUN是AutoCAD的一个指令。 <br/>&nbsp; &nbsp; 2在AutoCAD启动时自动地执行VBA宏 <br/>&nbsp; &nbsp; 用户可以自动地在acad.dvb文件中执行任何宏,方法是在AutoCAD的启动文件acad.lsp中使用VBARUN指令调用宏。 <br/>&nbsp; &nbsp; 例如,如果要自动地执行名为DrawBlot的宏,首先将DrawBlot宏创建在acad.dvb文件中,然后在AutoCAD的启动文件acad.lsp中添加下面程序代码: <br/>&nbsp; &nbsp; (defun S::STARTURP() <br/>&nbsp; &nbsp; (command "_-VBARUN"&nbsp; "DrawBlot")) </p><p></p><p></p><p><br/></p>

630051689 发表于 2008-7-29 23:58:00

<p>谢谢大家 我找到不能调用原因 </p><p>宏名不能用中文</p><p>这掉东西折腾了我1星期 悲剧阿</p>
页: [1]
查看完整版本: 如何用excel中的宏执行cad中的宏!跪求大虾赐教