明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4872|回复: 7

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

[复制链接]
发表于 2008-7-27 21:34:00 | 显示全部楼层 |阅读模式

我想在excel中打开cad 并加载dvb 然后执行! 前面都没问题  就是到红色字体 RunMacro 那步 出不来

还望高人指点下

******************************以下excel中的代码

Private Sub CommandButton1_Click()

Dim cap As AutoCAD.AcadApplication

Dim caddoc As AcadDocument, mospace As AcadModelSpace

On Error Resume Next '忽略错误

   Set cap = GetObject(, "Autocad.application")

If Err.Number <> 0 Then '如果 Excel 没有运行则

  Err.Clear

  Set cap = CreateObject("Autocad.application")
  
End If

  cap.Visible = True
  
  

Set caddoc = cap.ActiveDocument


Set mospace = caddoc.ModelSpace


Dim dwgname As String, aada As Object

dwgname = "H:\试验表格\综合部分\数字驱动版\开料\主杆下料图模板.dwg"


Set caddoc = cap.Documents.Open(dwgname)


    Dim FileName As String
   
    FileName = "F:\gongzuo\My Draw\复件绘图模板\下料数据.dvb"
    
   
   cap.LoadDVB FileName
    
       
   cap.RunMacro ("caddoc.修改")

caddoc.Close
cap.Quit

end sub

*****************************************下面的是cad中的宏*************
Sub 修改()
    Dim shuj(200, 1) As Variant
   
       Dim txrstring As String
     txtstring = InputBox("文件编号")
    
     Open "d:\pc001\huitu\XIALIAO\" & txtstring & ".txt" For Input As #1
        For n = 1 To 192
         Input #1, shuj(n, 0), shuj(n, 1)
         Next
    Close #1
    Dim returnObj As AcadObject
    For Each returnObj In ThisDrawing.ModelSpace
        For n = 1 To 192
            If returnObj.Handle = shuj(n, 0) Then
            returnObj.TextString = shuj(n, 1)
            End If
         Next
    Next
    MsgBox entObjectID
End Sub

发表于 2008-7-28 12:29:00 | 显示全部楼层

不太明白你的意思,一般是在CAD调用excel。

你的问题是跨平台运行,要想在excel中运行autocad,就直接在excel中,摸拟autocad VBA程序。

   Dim FileName As String
   
    FileName = "F:\gongzuo\My Draw\复件绘图模板\下料数据.dvb"
    
   
   cap.LoadDVB FileName
    
       表示你已经在CAD中装载了vba的dvb 文件。
   cap.RunMacro ("caddoc.修改")--这条语句是否为excel的caption按钮定义设置。

 楼主| 发表于 2008-7-28 19:07:00 | 显示全部楼层

本来我是在 excel里 模拟cad vba程序 得

后来发现excel 中的vba 是解释1句 执行1句 运行的太慢了

我就想  在CAD中装载dvb文件  然后执行dvb里的宏命令,在cad中运行话速度快很多。

装载成了 就是执行不了

 RunMacro到底怎么用呢? 还是我少了哪步?

发表于 2008-7-29 14:20:00 | 显示全部楼层

RunMacro没用过,在CAD中,调试程序常用的是-vbarun 文件名(.dvb)。

实在没明白,RunMacro在此处有何用途?谢谢。

 楼主| 发表于 2008-7-29 22:39:00 | 显示全部楼层

用sendcommand方法?

我 试 过 sendcommand 方法 发送 -vbarun  但是命令行提示我输入 宏名 我输入

  "F:\主杆下料图模板.dwg!ThisDrawing.修改"    然后就提示找不到宏

后来又把  -vbarun  "F:\主杆下料图模板.dwg!ThisDrawing.修改"  连着输  也不行

我就不知道哪错了!

能给个 -vbarun 得实例吗!!  谢谢了

我忙了1礼拜了 也没找到      跨平台调用cad宏的办法

其他方式也行  最好上个例子  1小段就成

小弟涕零

 楼主| 发表于 2008-7-29 23:04:00 | 显示全部楼层

我想用sendcommad 方式都不行

哪错了呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2008-7-29 23:23:00 | 显示全部楼层

以下是网上发现出现最多的1种方法 ,但是红色字部分看不懂 高人请指点我把

二、执行VBA宏
    要执行工程中的宏,有下面三种方法:
    1.从工具条或者下拉菜单执行VBA宏
    用户可以从AutoCAD的工具条或者下拉菜单来执行VBA宏,这需要修改该工具条按钮或者下拉菜单项的Macro属性。Macro扇性必须设定等于:
        -VBRUN Filename.dvb!ProjectName.MacroName
    其中Filename.dvb为工程的文件名,ProjectName为工程的名称,MacroName则是要执行的宏的名称,VBARUN是AutoCAD的一个指令。
    2在AutoCAD启动时自动地执行VBA宏
    用户可以自动地在acad.dvb文件中执行任何宏,方法是在AutoCAD的启动文件acad.lsp中使用VBARUN指令调用宏。
    例如,如果要自动地执行名为DrawBlot的宏,首先将DrawBlot宏创建在acad.dvb文件中,然后在AutoCAD的启动文件acad.lsp中添加下面程序代码:
    (defun S::STARTURP()
    (command "_-VBARUN"  "DrawBlot"))


 楼主| 发表于 2008-7-29 23:58:00 | 显示全部楼层

谢谢大家 我找到不能调用原因

宏名不能用中文

这掉东西折腾了我1星期 悲剧阿

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 02:04 , Processed in 0.194621 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表