shadow88
Goto Top

VBA Prozess stoppen während Report offen

Hallo zusammen,

hab doch noch eine letzte Frage ;)

Und zwar möchte ich einen Report als Preview öffnen und währenddessen die VBA Prozedur (danach kommt eine Benutzerabfrage) pausieren.

Hier der Code:

...
DoCmd.OpenReport "rptSAvoll_nnFakt_neu_Auto", acViewPreview  

--HIER SOLL GEWARTET WERDEN, BIS DER REPORT NICHT MEHR OFFEN IST--

AbfrageRecord = MsgBox("Next study?", vbOKCancel)  
If AbfrageRecord = 2 Then
...

Ist so etwas möglich oder habt ihr eine andere Idee?

Vielen Dank für eure Hilfe!

Liebe Grüße,

Robert

Content-ID: 99813

Url: https://administrator.de/forum/vba-prozess-stoppen-waehrend-report-offen-99813.html

Ausgedruckt am: 16.04.2025 um 13:04 Uhr

27234
27234 21.10.2008 um 11:07:16 Uhr
Goto Top
Hallo,

dazu kann man sich mit einem kleinen Umweg und 2 zusätzlichen Funktionen behelfen.
1. 2 Funktionen einfügen
Function IsReportLoaded(strReportname As String) As Integer
On Error GoTo IsReportLoaded_Err

    Dim i As Integer

    For i = 0 To Reports.Count - 1
        If Reports(i).Name = strReportname Then
            IsReportLoaded = True
            Exit Function
        End If
    Next i
    
    IsReportLoaded = False

    Exit Function

IsReportLoaded_Err:

    MsgBox Err.Description
    IsReportLoaded = False
    Exit Function

End Function

und

Function Sleep(dauer As Long) As Integer

    On Error GoTo Sleep_Err

    Dim zielwert As Variant
    Dim aktwert As Variant

    Dim i As Long
    Dim ret As Variant

    zielwert = Now
    
    While (Now - zielwert < (dauer / 86400))
        DoEvents
    Wend

    Sleep = True

    Exit Function

Sleep_Err:
    
    MsgBox Err.Description
    Sleep = False
    Exit Function

End Function

2. Deinen Code so anpassen:
...
DoCmd.OpenReport "rptSAvoll_nnFakt_neu_Auto", acViewPreview  

--HIER SOLL GEWARTET WERDEN, BIS DER REPORT NICHT MEHR OFFEN IST--
Do
    If IsReportLoaded("rptSAvoll_nnFakt_neu_Auto") Then  
        Sleep (5)
    Else
        Exit Do
    End If
Loop


AbfrageRecord = MsgBox("Next study?", vbOKCancel)  
If AbfrageRecord = 2 Then
...

Gruß - René
Shadow88
Shadow88 21.10.2008 um 11:33:15 Uhr
Goto Top
Super, funktioniert einwandfrei!!!!

Klasse René. =) Danke Dir für Deine tolle Hilfe.

Liebe Grüße,

Robert