Lost in loop
02.08.2022 21:50:51
Dieter
mit der workbook_open Routine einer makrogesteuerten Excel-Datei soll eine zweite makrogesteuerte Excel-Datei gestartet werden, die ebenfalls eine workbook_open Routine enthält. Dabei soll die aufrufende Datei im Vollbild modus Vordergund bleiben und erst dann geschlossen werden, wenn die zweite Datei geladen ist.
Nachdem die zweite Datei (master file) vollständig geladen ist, müsste sie in der Schleife 'wait, until master file is loaded' erkannt werden, was die Variable LoadFlg auf 'True' setzt und das Progamm fortsetzt. Die zweite Datei wird tatsächlich vollständig geladen und steht mit allen Funktionen zur Verfügung, während die erste Datei weiterhin in der Schleife "hängt".
Tatsächlich wird das flag nicht gesetzt, wahrscheinlich, weil WrkBk.Name (MstFil.xlsm) in der For Each ... Schleife nicht gefunden wird. Warum, und was sollte ich noch prüfen?
Hier zur Erläuterung der code der workbook_open Routine:
**********
Sub workbook_open()
'2022-08-02
'provides a start screen and launches Leagualyzer
'declarations
Dim MstFilNamExt As String 'filename extension of master file
Dim SysPath As String 'current location of master file
Dim WinShl As Object 'shell object to open masterfile from 'outside Excel'
Dim WrkBk As Workbook 'to monitor open Excel files
Dim LoadFlg As Boolean 'flag, if file 'MstFil' is loaded
'window layout
ActiveWindow.DisplayHeadings = False
Application.DisplayFullScreen = True
'read variables
MstFilNamExt = ThisWorkbook.Sheets("Aux").Range("Aux_MstFilNamExt").Value
SysPath = Workbooks("Leagualyzer" & MstFilNamExt).Path & "\"
'open master file
Set WinShl = CreateObject("Shell.Application")
WinShl.Open (SysPath & "MstFil" & MstFilNamExt)
'focus on 'Leagualyzer'
Workbooks("Leagualyzer").Sheets("Launch").Select
ActiveSheet.Range("A1").Select
ActiveSheet.Range("BA40").Select
'wait, until master file is loaded
LoadFlg = False
Do
For Each WrkBk In Workbooks
If WrkBk.Name = ("MstFil" & MstFilNamExt) Then LoadFlg = True
Next WrkBk
Loop Until LoadFlg = True
'close launcher
Workbooks("Leagualyzer" & MstFilNamExt).Close SaveChanges:=False
End Sub
**********Ich bin sicher, dass Ihr mir wieder aufs Fahrrad helfen könnt.
Beste Grüße
Dieter