There were many other great posts, however I would like to say that theoretically you should be able to create a REAL progress indicator:
- Use
CreateWindowEx() to create a progress bar.
C ++ example:
hwndPB = CreateWindowEx(0, PROGRESS_CLASS, (LPTSTR) NULL, WS_CHILD | WS_VISIBLE, rcClient.left,rcClient.bottom - cyVScroll,rcClient.right, cyVScroll,hwndParent, (HMENU) 0, g_hinst, NULL);
hwndParent Must be set to the parent window. You can use the status bar or a custom form for this! Here is the Excel window structure found from Spy ++:

Therefore, it should be relatively simple using the FindWindowEx() function.
hwndParent = FindWindowEx(Application.hwnd,,"MsoCommandBar","Status Bar")
After the progress bar has been created, you should use SendMessage() to interact with the progress bar:
Function MAKELPARAM(ByVal loWord As Integer, ByVal hiWord As Integer) Dim lparam As Long MAKELPARAM = loWord Or (&H10000 * hiWord) End Function SendMessage(hwndPB, PBM_SETRANGE, 0, MAKELPARAM(0, 100)) SendMessage(hwndPB, PBM_SETSTEP, 1, 0) For i = 1 to 100 SendMessage(hwndPB, PBM_STEPIT, 0, 0) Next DestroyWindow(hwndPB)
I'm not sure how practical this solution is, but it may look a little more βofficialβ than the other methods outlined here.