una titulo rapido progreso porcentaje mientras macro herramientas funciones fisico ejecuta completado barra acceso excel vba ms-word progress-bar ms-office

excel - rapido - barra de titulo de word



¿Cómo puedo acceder a la barra de progreso en la barra de estado de una aplicación de Office? (4)

Construyo aplicaciones VBA para Word y Excel, ¿hay alguna forma de acceder a la barra de progreso que a veces aparece en la barra de estado de Office?


No he accedido a la barra de progreso, pero en el pasado usé algo como esto para colocar el texto del estado de la tarea en la barra de estado ...

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


Recomendaría, además, registrar el estado actual de StatusBar, luego restaurarlo cuando todo esté hecho.

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


AFAIK, no hay forma de reproducir la línea azul de puntos utilizada por Word y Excel para mostrar el progreso hacia el 100%, por ejemplo, al abrir un archivo.

Recuerdo que una vez vi un código para replicarlo en la barra de estado, pero era complejo, y no lo recomendaría, cuando es suficiente decir "X% completado" en la barra de estado, usando Application.StatusBar.


Lo siguiente simulará una barra de progreso en la barra de estado de 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