ObjectDBX从AccessVBA-如何关闭acad.exe?
大家好:新手在这里有一个问题。我终于能够找到足够的信息来弄清楚如何从Access w VBA和ObjectDBX中读取和更改dwg文件中的摘要信息,但是当我清理时,要么我无法启动它,要么acad.exe进程仍然存在。
有人能告诉我如何在不需要用户干预的情况下完成它吗?
如果我这样做,
Dim objAcad As Object
Dim dbxDoc As AxDbDocument
Dim oSumInfo As AcadSummaryInfo
Dim strDwgName As String
strDwgName = "D:\Working\Doc_nums_and_logs\NewVersionOffice\Drawing1.dwg"
Set objAcad = GetObject(, "AutoCAD.Application.16")
Set dbxDoc = objAcad.GetInterfaceObject("ObjectDBX.AxDbDocument.16")
dbxDoc.Open (strDwgName)
Set oSumInfo = dbxDoc.SummaryInfo
MsgBox "this is it before " & oSumInfo.Comments
dbxDoc.SummaryInfo.Comments = "changed here by me again"
dbxDoc.SaveAs (strDwgName)
objAcad.Quit
MsgBox "this is it after " & oSumInfo.Comments
objAcad.Quit
Set oSumInfo = Nothing
Set dbxDoc = Nothing
Set objAcad = Nothing
那么如果没有Autocad已经启动,它就无法工作。
如果我这样做,没有“对象”:
Dim dbxDoc As AxDbDocument
Dim oSumInfo As AcadSummaryInfo
Dim strDwgName As String
strDwgName = "D:\Working\Doc_nums_and_logs\NewVersionOffice\Drawing1.dwg"
Set dbxDoc = GetInterfaceObject("ObjectDBX.AxDbDocument.16")
dbxDoc.Open (strDwgName)
Set oSumInfo = dbxDoc.SummaryInfo
MsgBox "this is it before " & oSumInfo.Comments
dbxDoc.SummaryInfo.Comments = "changed here by me again"
dbxDoc.SaveAs (strDwgName)
MsgBox "this is it after " & oSumInfo.Comments
Set oSumInfo = Nothing
Set dbxDoc = Nothing
那么它将在没有Autocad已经启动的情况下正常启动,但它不会正确关闭并保持acad.exe进程处于活动状态。(据我所知)但是如果我没有要关闭的对象,我该怎么办?
感谢您提供任何线索,但真正明目张胆的线索更值得赞赏
**** Hidden Message ***** 嗨,Mike,
正如Berend所说,您必须检查正在运行的实例,如果没有找到,则创建一个。我还要进一步说,您应该根据您是否实例化了Acad会话将变量设置为T/F,这样您只能在打开它时关闭它。无论如何,请为Acad会话设置一个对象。此外,在需要关闭Acad之前,先设置dbxDoc=没什么,然后关闭它。 谢谢Berend & Jeff——我正在朝那个方向努力,但是我似乎把顺序颠倒了。你应该打扫干净然后关上它?显然睡眠不足——我知道得更清楚...
我刚刚从项目中被拉出来,去扑灭另一场大火,所以我稍后会再回来。
再次感谢!
页:
[1]