我正在使用以下子例程来调用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脚本完成,我不明白为什么状态栏正在“释放” ”
非常感谢任何修复或正确方向的指针。
答案 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