怎么实现点击按扭,激活已经打开的文档啊??再线等!

时间:2022-08-02 18:57:27
如果一个文档打开后并未不关闭,
然后再程序中,点击命令按扭激活它成为当前活动窗口

这个怎么实现呢??


或是点击命令按扭,保存并关闭打开的文档??
实现哪种都给分!!!!

13 个解决方案

#1


activeapp试一下
api SetForegroundWindow
第2个可以发送command消息来处理菜单。 
具体你可以用spy++拦截下。

#2


楼主请说得再详细一点:什么类型的文档?word?text?知道完整路径文件名吗?

#3


关注!

#4


致::happy_sea(开心海) 

感谢大哥关注小弟的问题

我的是 word 文档,,知道完整的路径名的 

问题 源于此:一个全屏的界面,上面有一命令按扭,点击之后能打开一个word 文档,用户按一定要求操作该文档,之后当其操作完之后,如果保存并关闭了,,点击另外的按扭,会执行已经录制的宏,判断其操作,,这时问题出现,,就是 用户有时并不一定会操作完该word  文档,就回到全屏的界面,之后他或许会再次想操作 该文档,而这时该文档已经打开了,尤其是点击完成时,会因为打开了多个文档而使得文档无法保存(会出现另存为),完成的功能实现不了!

#5


既然是word文档,而且知道文件名,那这个问题就好办了,请看下面的代码:

'请先添加对word对象的引用
Dim objWord As Object
Dim doc As Object

Private Sub command1_click()
    Set doc = GetObject("d:\test.doc") '获取word的documents对象
    Set objWord = doc.Application '通过doc获取word对象
      
    doc.Close savechanges:=True     '保存并关闭文档
    objWord.DisplayAlerts = False  '禁止出现提示
    objWord.Quit '退出word
End Sub

获取到objWord对象以后,你就可以用word对象的各种方法属性来进行任意操作了,getobject真是个好东西。

#6


学习

#7


If IsWordOpen Then                       '调用函数判断文件是否已经打开
'    MsgBox "     您要操作的文件已经打开!" & Chr(13) & "如果操作完毕,请保存后关闭,进行其他操作!", vbInformation + vbOKOnly, "系统提示"
'   WindowState = 1
    WordApp.Visible = True
    WordApp.Activate
    WordApp.WindowState = wdWindowStateMaximize
    Set WordDoc = GetObject("D:\TEST\" & KaoHao & "\word.doc")
    WordDoc.Activate
    
Else
    WordApp.Visible = True
    WordApp.Documents.Open "D:\TEST\" & KaoHao & "\word.doc"
End If
烦请各位看看我写的代码哈
我的用意是如果要操作的文档已经打开则调用函数判断一下,然后在将打开的原文档显示为当前窗口,可是我的代码,如果是文档已经打开则只是能重新打开一个word 的 application

不知道如何,将打开的原文档显示为当前窗口???
还请各位告之一二?

#8


学习

#9


今天都很忙么,怎么没人来看看我的代码啊
现在好郁闷啊!!

#10


楼主没有认真分析我的代码啊!
就不具体给你改了,提示一下错在哪里你自己搞吧:
如果文档已打开,应该先用Set WordDoc = GetObject("D:\TEST\" & KaoHao & "\word.doc")获取到WordDoc这个word.documents对象,然后再用Set WordApp=WordDoc.Application获取到WordDoc对象,你在顺序上搞错了。

#11


致:happy_sea(开心海)

您的代码我看了
并且在机器上实现了一下,
用户有时并不一定会操作完该word  文档,就回到全屏的界面,之后他或许会再次想操作 该文档,而这时该文档已经打开了,尤其是点击完成时,会因为打开了多个文档而使得文档无法保存(会出现另存为),完成的功能实现不了!
可是想想,还是激活已经打开的更好一些


我是想将打开的文档在显示为当前窗口(也就是从程序中转到文档上来),打开未经关闭的文档!

还请大哥在给看看,多谢!
关于文档的操作,不是太熟,还请大哥多多指点!

#12


我给的代码中:
Set doc = GetObject("d:\test.doc") '获取word的documents对象
Set objWord = doc.Application '通过doc获取word对象
如果"d:\test.doc"这个文档已打开,那么第一句代码doc就是对应于这个已打开的文档的document对象,而第二句objWord就是正在操作"d:\test.doc"这个文档的word对象,而不会另外运行一个word来再次打开"d:\test.doc",如果你运行过我给的代码的话应该知道的。
然后你就可以用objWord.Visible=True来让word显示,objWord.Activate来激活word窗口等等操作,这不正是你要的吗?

#13


哈哈
问题解决,还是对这个不太熟,今天才发现,我想要的功能都在课本上有

晕,不好好学习的下场啊!!!

谢谢大哥门的帮助,特别感谢开心海大哥

您真是个不错的 人!

#1


activeapp试一下
api SetForegroundWindow
第2个可以发送command消息来处理菜单。 
具体你可以用spy++拦截下。

#2


楼主请说得再详细一点:什么类型的文档?word?text?知道完整路径文件名吗?

#3


关注!

#4


致::happy_sea(开心海) 

感谢大哥关注小弟的问题

我的是 word 文档,,知道完整的路径名的 

问题 源于此:一个全屏的界面,上面有一命令按扭,点击之后能打开一个word 文档,用户按一定要求操作该文档,之后当其操作完之后,如果保存并关闭了,,点击另外的按扭,会执行已经录制的宏,判断其操作,,这时问题出现,,就是 用户有时并不一定会操作完该word  文档,就回到全屏的界面,之后他或许会再次想操作 该文档,而这时该文档已经打开了,尤其是点击完成时,会因为打开了多个文档而使得文档无法保存(会出现另存为),完成的功能实现不了!

#5


既然是word文档,而且知道文件名,那这个问题就好办了,请看下面的代码:

'请先添加对word对象的引用
Dim objWord As Object
Dim doc As Object

Private Sub command1_click()
    Set doc = GetObject("d:\test.doc") '获取word的documents对象
    Set objWord = doc.Application '通过doc获取word对象
      
    doc.Close savechanges:=True     '保存并关闭文档
    objWord.DisplayAlerts = False  '禁止出现提示
    objWord.Quit '退出word
End Sub

获取到objWord对象以后,你就可以用word对象的各种方法属性来进行任意操作了,getobject真是个好东西。

#6


学习

#7


If IsWordOpen Then                       '调用函数判断文件是否已经打开
'    MsgBox "     您要操作的文件已经打开!" & Chr(13) & "如果操作完毕,请保存后关闭,进行其他操作!", vbInformation + vbOKOnly, "系统提示"
'   WindowState = 1
    WordApp.Visible = True
    WordApp.Activate
    WordApp.WindowState = wdWindowStateMaximize
    Set WordDoc = GetObject("D:\TEST\" & KaoHao & "\word.doc")
    WordDoc.Activate
    
Else
    WordApp.Visible = True
    WordApp.Documents.Open "D:\TEST\" & KaoHao & "\word.doc"
End If
烦请各位看看我写的代码哈
我的用意是如果要操作的文档已经打开则调用函数判断一下,然后在将打开的原文档显示为当前窗口,可是我的代码,如果是文档已经打开则只是能重新打开一个word 的 application

不知道如何,将打开的原文档显示为当前窗口???
还请各位告之一二?

#8


学习

#9


今天都很忙么,怎么没人来看看我的代码啊
现在好郁闷啊!!

#10


楼主没有认真分析我的代码啊!
就不具体给你改了,提示一下错在哪里你自己搞吧:
如果文档已打开,应该先用Set WordDoc = GetObject("D:\TEST\" & KaoHao & "\word.doc")获取到WordDoc这个word.documents对象,然后再用Set WordApp=WordDoc.Application获取到WordDoc对象,你在顺序上搞错了。

#11


致:happy_sea(开心海)

您的代码我看了
并且在机器上实现了一下,
用户有时并不一定会操作完该word  文档,就回到全屏的界面,之后他或许会再次想操作 该文档,而这时该文档已经打开了,尤其是点击完成时,会因为打开了多个文档而使得文档无法保存(会出现另存为),完成的功能实现不了!
可是想想,还是激活已经打开的更好一些


我是想将打开的文档在显示为当前窗口(也就是从程序中转到文档上来),打开未经关闭的文档!

还请大哥在给看看,多谢!
关于文档的操作,不是太熟,还请大哥多多指点!

#12


我给的代码中:
Set doc = GetObject("d:\test.doc") '获取word的documents对象
Set objWord = doc.Application '通过doc获取word对象
如果"d:\test.doc"这个文档已打开,那么第一句代码doc就是对应于这个已打开的文档的document对象,而第二句objWord就是正在操作"d:\test.doc"这个文档的word对象,而不会另外运行一个word来再次打开"d:\test.doc",如果你运行过我给的代码的话应该知道的。
然后你就可以用objWord.Visible=True来让word显示,objWord.Activate来激活word窗口等等操作,这不正是你要的吗?

#13


哈哈
问题解决,还是对这个不太熟,今天才发现,我想要的功能都在课本上有

晕,不好好学习的下场啊!!!

谢谢大哥门的帮助,特别感谢开心海大哥

您真是个不错的 人!