Я создаю приложения VBA для Word и Excel, есть ли способ получить доступ к индикатору выполнения, который иногда появляется в строке состояния Office.
Доступ к индикатору выполнения в строке состояния приложения Office
Ответы (4)
Следующее будет имитировать индикатор выполнения в строке состояния Excel:
Public Sub UpdateStatusBar(percent As Double, Optional Message As String = "")
Const maxBars As Long = 20
Const before As String = "["
Const after As String = "]"
Dim bar As String
Dim notBar As String
Dim numBars As Long
bar = Chr(31)
notBar = Chr(151)
numBars = percent * maxBars
Application.StatusBar = _
before & Application.Rept(bar, numBars) & Application.Rept(notBar, maxBars - numBars) & after & " " & _
Message & " (" & PercentageToString(percent) & "%)"
DoEvents
End Sub
person
Carl G
schedule
20.11.2008
Я бы порекомендовал дополнительно записывать текущее состояние StatusBar, а затем восстанавливать его, когда все будет сделано.
Dim OldStatus
With Application
OldStatus = .DisplayStatusBar
.DisplayStatusBar = True
.StatusBar = "Doing my duty, please wait..."
End With
' Do what you do best here (you can refresh the .StatusBar message with updted, as needed)
With Application
.StatusBar = False
.DisplayStatusBar = OldStatus
End With
person
KnomDeGuerre
schedule
22.10.2008
У меня нет доступа к индикатору выполнения, но в прошлом я использовал что-то подобное для размещения текста состояния задачи в строке состояния...
Sub StatusBarExample()
Application.ScreenUpdating = False
' turns off screen updating
Application.DisplayStatusBar = True
' makes sure that the statusbar is visible
Application.StatusBar = "Please wait while performing task 1..."
' add some code for task 1 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = "Please wait while performing task 2..."
' add some code for task 2 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = False
' gives control of the statusbar back to the programme
End Sub
person
Galwegian
schedule
20.10.2008
Насколько я знаю, невозможно воспроизвести синюю линию точек, используемую Word и Excel, чтобы показать прогресс до 100%, например, при открытии файла.
Я помню, как однажды видел какой-то код для его воспроизведения в строке состояния, но он был сложным, и я бы не рекомендовал его, когда вместо этого вполне достаточно сказать «X% завершено» в строке состояния, используя Application.StatusBar.
person
dbb
schedule
26.10.2008