乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 37|回复: 2

ObjectDBX从AccessVBA-如何关闭acad.exe?

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2006-5-2 14:48:45 | 显示全部楼层 |阅读模式
大家好:
新手在这里有一个问题。我终于能够找到足够的信息来弄清楚如何从Access w VBA和ObjectDBX中读取和更改dwg文件中的摘要信息,但是当我清理时,要么我无法启动它,要么acad.exe进程仍然存在。
有人能告诉我如何在不需要用户干预的情况下完成它吗?
如果我这样做,
  1.    Dim objAcad As Object
  2.    Dim dbxDoc As AxDbDocument
  3.    Dim oSumInfo As AcadSummaryInfo
  4.    Dim strDwgName As String
  5.    
  6.    strDwgName = "D:\Working\Doc_nums_and_logs\NewVersionOffice\Drawing1.dwg"
  7.    
  8.    Set objAcad = GetObject(, "AutoCAD.Application.16")
  9.    Set dbxDoc = objAcad.GetInterfaceObject("ObjectDBX.AxDbDocument.16")
  10.    
  11.    dbxDoc.Open (strDwgName)
  12.    Set oSumInfo = dbxDoc.SummaryInfo
  13.   
  14.    MsgBox "this is it before " & oSumInfo.Comments
  15.    
  16.    dbxDoc.SummaryInfo.Comments = "changed here by me again"
  17.    dbxDoc.SaveAs (strDwgName)
  18.    objAcad.Quit
  19.    
  20.    MsgBox "this is it after " & oSumInfo.Comments
  21. objAcad.Quit
  22.    Set oSumInfo = Nothing
  23.    Set dbxDoc = Nothing
  24.    Set objAcad = Nothing

那么如果没有Autocad已经启动,它就无法工作。
如果我这样做,没有“对象”:
  1.    Dim dbxDoc As AxDbDocument
  2.    Dim oSumInfo As AcadSummaryInfo
  3.    Dim strDwgName As String
  4.    
  5.    strDwgName = "D:\Working\Doc_nums_and_logs\NewVersionOffice\Drawing1.dwg"
  6.    
  7.    Set dbxDoc = GetInterfaceObject("ObjectDBX.AxDbDocument.16")
  8.    
  9.    dbxDoc.Open (strDwgName)
  10.    Set oSumInfo = dbxDoc.SummaryInfo
  11.   
  12.    MsgBox "this is it before " & oSumInfo.Comments
  13.    
  14.    dbxDoc.SummaryInfo.Comments = "changed here by me again"
  15.    dbxDoc.SaveAs (strDwgName)
  16.    
  17.    MsgBox "this is it after " & oSumInfo.Comments
  18.    Set oSumInfo = Nothing
  19.    Set dbxDoc = Nothing

那么它将在没有Autocad已经启动的情况下正常启动,但它不会正确关闭并保持acad.exe进程处于活动状态。(据我所知)但是如果我没有要关闭的对象,我该怎么办?
感谢您提供任何线索,但真正明目张胆的线索更值得赞赏

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

6

主题

94

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2006-5-2 15:27:49 | 显示全部楼层
嗨,Mike,
正如Berend所说,您必须检查正在运行的实例,如果没有找到,则创建一个。我还要进一步说,您应该根据您是否实例化了Acad会话将变量设置为T/F,这样您只能在打开它时关闭它。无论如何,请为Acad会话设置一个对象。此外,在需要关闭Acad之前,先设置dbxDoc=没什么,然后关闭它。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-5-2 15:58:31 | 显示全部楼层
谢谢Berend & Jeff——我正在朝那个方向努力,但是我似乎把顺序颠倒了。你应该打扫干净然后关上它?显然睡眠不足——我知道得更清楚...
我刚刚从项目中被拉出来,去扑灭另一场大火,所以我稍后会再回来。
再次感谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-5 17:55 , Processed in 1.402111 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表