Jess
New member
Hi Forum Members
I have developed an Excel 2003 vba programme to calculate the values of commissions payable to a number of different organisations.
Following a series of calculations initiated via a userform, a bespoke statement is then generated in Word the whole process taking approximately 7 seconds.
Because of the timescale I have introduced a progress bar on the form where the length of a label is increased in length at predefined points in the code with a status label text changing as the programme progresses.
All works fine until the word application is initiated where a delay of approx 2+ Secs occurs. Using the timeGetTime API I've indicated the timings in the adapted code snippet below.
So to my question: How can I detect when the Word application is loaded using a Do loop statement in order to update the progress bar during this delay.
I have developed an Excel 2003 vba programme to calculate the values of commissions payable to a number of different organisations.
Following a series of calculations initiated via a userform, a bespoke statement is then generated in Word the whole process taking approximately 7 seconds.
Because of the timescale I have introduced a progress bar on the form where the length of a label is increased in length at predefined points in the code with a status label text changing as the programme progresses.
All works fine until the word application is initiated where a delay of approx 2+ Secs occurs. Using the timeGetTime API I've indicated the timings in the adapted code snippet below.
So to my question: How can I detect when the Word application is loaded using a Do loop statement in order to update the progress bar during this delay.
Code:
'Declared at module level.
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
dim lngStart as long
Sub Load_MSWord()
Dim wdApp As Object
lngStart = timeGetTime
If blArchive Then
Call Update_ProgressBar(5, "Opening Word") '24ms elapsed
End If
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Err.Clear
'Debug.Print "Post-GetObject: " & Finish '25ms elapsed <<===
Set wdApp = CreateObject("Word.Application")
'Debug.Print "Post-Create oWord: " & Finish '2183ms elapsed <<===
'Populate the statement document.
Write_Doc wdApp
'Debug.Print "Post-Write Doc: " & Finish '4554ms
End If
Set wdApp = Nothing
Application.Cursor = xlDefault
On Error GoTo 0
Exit Sub
End Sub
Function Finish()
Finish = timeGetTime() - lngStart
End Function