Excel中VBA的Name和Shell相关问题(高手进,有加分)

1.用NameAasB语句重命名目录时如该目录或其下层目录处于打开状态时,就会产生错误,那如何判断该目录或其下层子目录是否处于打开状态呢?2.类似的,用shell命令打开... 1.用Name A as B 语句重命名目录时如该目录或其下层目录处于打开状态时,就会产生错误,那如何判断该目录或其下层子目录是否处于打开状态呢?
2.类似的,用shell命令打开其它应用程序,如果其它应用程序已处于运行状态,虽不一定会产生错误,但同时运行多个程序也不好,可能会大量占用内存,那如何判断该程序是否处于运行状态呢?
3.另外,打开与关闭目录的命令是什么?
另外,以上问题不能使用Error语句,否则我也不用在这里提问了
本人是初学者,希望能写明所用到的命令的格式及语法,最好再举例说明一下,答的满意的有加分(20-50分).
决不食言!
多谢了!
展开
 我来答
2724421
2012-08-26 · TA获得超过2490个赞
知道大有可为答主
回答量:1551
采纳率:71%
帮助的人:926万
展开全部
问题1和2中判断文件夹和程序是否打开和运行, 解决思路是调用windows API的findwindow 函数去查找是否有符合条件的窗口,如果有则文件夹是打开的或者程序是运行的.代码如下:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long '声明API findwindow函数

Sub aa()
Name = "downloads" '把文件夹窗口名称或者程序窗口名称赋值给name
i = FindWindow(vbNullString, Name)
If i <> 0 Then MsgBox Name & "是打开的!"
End Sub

关闭目录的方法
方法1: 关闭指定文件夹
Sub fig()
Set WS = CreateObject("WSCRIPT.SHELL")
WS.AppActivate "本地磁盘 (C:)"
WS.SendKeys "%fc"
End Sub
如果不能确定文件夹是否打开用
方法2:关闭所有的文件夹
Sub fig1()
Set x = CreateObject("wscript.shell")
x.Run "taskkill /F /IM explorer.exe", 0, True
x.Run "explorer.exe", 1, False
End Sub
更多追问追答
追问
你好,第1,2个问题已经解决了,故先追加30分
但第3个问题没有解决:
我测试了下方法1,但无法把焦点移到相应的窗口上去,窗口只是作为焦点闪了下,又回到Thisworkbook上了,那怎样才能让窗口持续拥有焦点呢?
另外,有打开目录的办法么
多谢了
追答
方法1.我测试过是可以正确关闭指定的窗口的,但不能用F8单步执行.
让窗口持续拥有焦点,
删除WS.SendKeys "%fc" 这句
且不要在VBA编辑器中执行方法1 的代码,
在工作表窗口按ALT+F8选中该宏执行是会持续拥有焦点的.
打开文件夹
方法1
ActiveWorkbook.FollowHyperlink Address:=ThisWorkbook.Path, NewWindow:=True
方法2
Shell "EXPLORER.EXE " & ThisWorkbook.Path, vbNormalFocus
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式