找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 656|回复: 5

[求助]:想把下面的vba---〉vb

[复制链接]
发表于 2004-6-16 16:58:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
下面是我在vba里通过的,但是我到vb下时能打开却不能执行另存
Private Sub CommandButton1_Click()
Dim dwg As String
Dim fn As String
Dim fs As Object
Dim dxf As Object

dwg = Dir(TextBox1.Text & "\*.dwg")
Set fs = CreateObject("Scripting.FileSystemObject")
Set dxf = fs.createfolder(TextBox2.Text)

    ThisDrawing.Application.Documents.Open "" & TextBox1.Text & "\" & dwg & ""
    fn = Mid(dwg, 1, Len(dwg) - 4)
    'ThisDrawing.SaveAs "" & TextBox1.Text & "\" & "dxf" & "\" & fn & "", acR12_dxf
    ThisDrawing.SaveAs "" & dxf & "\" & fn & "", acR12_dxf
    ThisDrawing.Close

End Sub

'***********************************
'***********************************
'vb下我改为
Option Explicit
Private Sub Command1_Click()

Dim dwg As String
Dim fn As String
Dim fs As Object
Dim acadApp As Object
Dim acadDoc As Object

On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument

On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then
Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then End
End If
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
'*******************************************

dwg = Dir(Text1.Text & "\*.dwg")
'Set fs = CreateObject("Scripting.FileSystemObject")
'Set dxf = fs.creat
  
   acadDoc.Application.Documents.Open "" & Text1.Text & "\" & dwg & ""
   fn = Mid(dwg, 1, Len(dwg) - 4)
   acadDoc.SaveAs "" & Text1.Text & "\" & fn & "", acR12_dxf
   acadDoc.Close

End Sub
'*在acadDoc.SaveAs 好像没有反应,怎么改呢?
其实我想实现的就是dwg另存为dxf
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2004-6-16 19:57:53 | 显示全部楼层
刚打开的文档并不是acadDoc,要重设一次当前文档,这一点与VBA中的ThisDrawing是有区别的。
acadDoc.Application.Documents.Open "" & Text1.Text & "\" & dwg & ""
Set acadDoc = acadApp.ActiveDocument
fn = Mid(dwg, 1, Len(dwg) - 4)
acadDoc.SaveAs "" & Text1.Text & "\" & fn & "", acR12_dxf
acadDoc.Close
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-18 10:39:21 | 显示全部楼层

Re: [求助]:想把下面的vba---〉vb

最初由 kileng 发布
[B]下面是我在vba里通过的,但是我到vb下时能打开却不能执行另存
Private Sub CommandButton1_Click()
Dim dwg As String
Dim fn As String
Dim fs As Object
Dim dxf As Object

dwg = Dir(TextBox1.Text & "\*... [/B]


可以保存了
于是,我想设置一个循环,把路径文件夹下的dwg都转为dxf,但是程序只做了一个文件,我的循环有错吗?
dwg = Dir(Text1.Text & "\*.dwg")
  
Do While dwg <> ""
   acadDoc.Application.Documents.Open "" & Text1.Text & "\" & dwg & ""
   Set acadDoc = acadApp.ActiveDocument
   fn = Mid(dwg, 1, Len(dwg) - 4)
   acadDoc.SaveAs "" & Text1.Text & "\" & fn & "", acR12_dxf
   acadDoc.Close
     
   dwg = Dir
   
Loop
End
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-18 11:21:22 | 显示全部楼层
用DBX做
Private Sub xl()
Dim objdbx As Object
Dim acadapp As Object
Set acadapp = GetObject(, "autocad.application.16")
Set objdbx = acadapp.GetInterfaceObject("ObjectDBX.AxDbDocument.16")
objdbx.Open "c:\2.dwg"
objdbx.DxfOut "c:\3.dxf"
set objdbx=nothing
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-18 12:16:56 | 显示全部楼层

Re: Re: [求助]:想把下面的vba---〉vb

最初由 kileng 发布
[B][QUOTE]最初由 kileng 发布
[B]下面是我在vba里通过的,但是我到vb下时能打开却不能执行另存
Private Sub CommandButton1_Click()
Dim dwg As String
Dim fn As String
Dim fs As Object
Dim dxf As Ob... [/B]


DBX 是什么?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-18 12:19:01 | 显示全部楼层
ObjectDBX有两种版本,一种是完全不需要AutoCAD,可单独运行,但它只能通过VC++来开发。

另外一种是ActiveX。可以在VB、VBA、及VL中使用,它可以做到在打开AutoCAd的情况下不打开图形而对图形进行编辑。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 09:32 , Processed in 0.396058 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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