使用Excel VBA调用Shell命令时出现奇怪的状态栏行为

时间:2013-12-31 08:23:32

标签: vba excel-vba shell command-prompt excel

我正在使用以下子例程来调用shell命令,作为在excel中使用VBA的更大进程的一部分:

Sub runShellScript(ByVal directory As String, command As String)
Dim terminal
Dim output

DoEvents
Application.StatusBar = "Processing data with python...this can take a while"

Set terminal = CreateObject("WScript.Shell")
terminal.Currentdirectory = directory
output = terminal.Run(command, 0, True)

Set output = Nothing
Set terminal = Nothing
End Sub

一切正常,但我不能让状态栏按照我喜欢的方式行事。目前,它正确启动(即状态栏更改为“使用python处理数据...”),但几秒钟后该消息被清除,状态栏将恢复为默认的“READY”状态。然而,更奇怪的是,如果我在任何一行停止该功能,它将恢复为“使用python处理数据......”

显然,这与终端独立于我的excel实例这一事实有关,但鉴于我的代码在等待shell脚本完成,我不明白为什么状态栏正在“释放” ”

非常感谢任何修复或正确方向的指针。

1 个答案:

答案 0 :(得分:0)

尝试关注Microsoft's example。它们还操纵DisplayStatusBar值:

oldStatusBar = Application.DisplayStatusBar 
Application.DisplayStatusBar = True 
Application.StatusBar = "Please be patient..." 
Workbooks.Open filename:="LARGE.XLS" 
Application.StatusBar = False 
Application.DisplayStatusBar = oldStatusBar