dong20030432 发表于 2018-4-25 13:49:35

如何把已经打开的非活动文档设置为活动文档?

我自己做一个小程序,列表中列出了要处理的文档,要逐一打开处理,但用户可能已经自己打开了其中部分图纸,再次打开会变成只读,无法写入数据,这时候需要把已经打开的图纸设置成活动文档,才可以写入数据,但不知道怎么设置活动文档,请高手指教!
IsOpenString '获得已经打开图纸的字符串组合
If IsOrNotHave(OpenTmpString, MyFileName) = False Then ’IsOrNotHave是自定义函数,用来查找判断是否已经打开
acadapp.Documents.Open MyPath & MyFileName ‘未打开的图纸正常打开
Else
’已经打开的图纸想设置为活动文档,这里应该怎么写???
End If

dong20030432 发表于 2018-4-25 16:40:27

mikewolf2k 发表于 2018-4-25 15:12
直接用document名字赋值,如果存在就返回相应的文档,如果不存在就报错。
如果这算一个方法的话。

在你的提示下,已经完成了代码编写,谢谢了!
IsOpen = False
For Each acaddoc In acadapp.Documents
If StrComp(acaddoc.Name, MyFileName, vbTextCompare) = 0 Then
IsOpen = True
acaddoc.Activate
Exit For
End If
Next
If IsOpen = False Then acadapp.Documents.Open MyPath & MyFileName

mikewolf2k 发表于 2018-4-25 14:35:07

我也做过类似的程序,我的方法是:
读取列表,在当前打开的文档里找是否已经打开,打开了就赋值给mydocument,没打开就打开并赋值给mydocument, 然后mydocument.activate,操作。
根据实际情况,可以设置一个变量保存是否已经打开,以便操作完毕后是否需要关闭新打开的文件。

mikewolf2k 发表于 2018-4-25 16:57:43

一点建议
IsOpen = False
For Each acaddoc In acadapp.Documents
If StrComp(acaddoc.Name, MyFileName, vbTextCompare) = 0 Then
IsOpen = True
set mydoc=acaddoc
Exit For
End If
Next
If IsOpen = False Then set mydoc=acadapp.Documents.Open MyPath & MyFileName
mydoc.activate

mikewolf2k 发表于 2018-4-25 14:14:16

document.Activate

dong20030432 发表于 2018-4-25 14:23:53

mikewolf2k 发表于 2018-4-25 14:14
document.Activate

感谢您的回答!
我新手,不是很明白,我已经知道路径(mypath)和名称(myfilename),具体应该怎么引用呢?也就是说我不知道路径加名称怎么与你说的document对应,查了好长时间资料也不会写,麻烦您了!

dong20030432 发表于 2018-4-25 14:27:51

mikewolf2k 发表于 2018-4-25 14:14
document.Activate

我查到的资料都是要先打开一次才能设置活动,可我现在文档已经打开不需要再打开一次,请问怎么设置呢?

dong20030432 发表于 2018-4-25 14:38:59

mikewolf2k 发表于 2018-4-25 14:35
我也做过类似的程序,我的方法是:
读取列表,在当前打开的文档里找是否已经打开,打开了就赋值给mydocume ...

可能我没说清楚,我就是不知道怎么赋值给mydocuments,能告诉我具体语句吗?不好意思,我刚开始接触,不太明白。

mikewolf2k 发表于 2018-4-25 14:40:53

先学习下如何遍历document。看帮助或者论坛里找都可以。

dong20030432 发表于 2018-4-25 14:49:33

mikewolf2k 发表于 2018-4-25 14:40
先学习下如何遍历document。看帮助或者论坛里找都可以。

哦,我好像明白了,是不是用for each 在documents里面循环比对,找到document对象后直接.activate?

mikewolf2k 发表于 2018-4-25 14:51:10

试试看

dong20030432 发表于 2018-4-25 15:02:16

mikewolf2k 发表于 2018-4-25 14:51
试试看

非常感谢您的耐心解答,问题应该能解决了,谢谢您!
还想再问一句,有没有什么方法能快速将已经知道fullname的对象设置为活动(即不用遍历documents),如果没有就不用回答了,谢谢!
页: [1] 2
查看完整版本: 如何把已经打开的非活动文档设置为活动文档?