Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Lost in loop

Lost in loop
02.08.2022 21:50:51
Dieter
Wieder mal moin aus Hamburg,
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lost in loop
02.08.2022 22:55:40
onur
Verstehe nicht, warum du, wenn doch die Dateinamen sowie die Endungen (kann ja nur xlsm sein) schon feststehen, diese in Variablen packen und aus Variablen bzw Zellen lesen musst. Sind doch alles zusätzliche mögliche Fehlerquellen (abgesehen von "völlig überflüssig").
Ausserdem ist mindestens eine dieser Zeilen überflüssig

        ActiveSheet.Range("A1").Select
ActiveSheet.Range("BA40").Select

AW: Lost in loop
02.08.2022 23:23:51
Dieter
Moin onur,
danke für Deine Hinweise.
Die umständlich erscheinende Prozedur mit der Dateiendung ".xlsm" habe ich bei
meinen Projekten eingeführt. nachdem Microsoft die Dateiendungen für Tabellen
mit Makros von "xlm" auf "xlsm" geändert hatte und ich sehr viele Dateien korrigieren
musste. Seitdem berechne ich die korrekte aktuelle Dateiendung automatisch und
verwende die dann in meinen Makros. So viel dazu.
Die beiden Zeilen mit ActiveSheet.Range(xyz).Select verwende ich, um die die Grafik
des Titelbildes zu justieren und die aktuelle Zellmarkierung hinter dem Titelbild zu
verstecken, kleines gimmick ...
Aber so richtig geholfen haben mir Deine Hinweise bei der Lösung meines Problems
noch nicht.
Beste Grüße
Dieter
Anzeige
AW: Lost in loop
02.08.2022 23:27:02
onur
"Aber so richtig geholfen haben mir Deine Hinweise bei der Lösung meines Problems noch nicht."
Dann solltest du auch mal die (Beispiels-) Datei posten.
AW: Lost in loop
03.08.2022 01:22:59
Dieter
Zusatzinfo: Workbooks.Count liefert den Wert 1, obwohl beide genannten Dateien geöffnet sind.
AW: Lost in loop
03.08.2022 01:38:45
Daniel
Hi
Wenn "MstFil" & MstFilNamExt eine normale Exceldatei sei soll, warum öffenst du die dann so umständlich in einer eigen Shell.Application?
Sollte nicht ein einfaches Workbooks.Open SysPath & "MstFil" & MstFilNamExt ausreichen?
Oder gleich einer Variable zuweisen: Set WrkBk = Workbooks.Open(SysPath & "MstFil" & MstFilNamExt )
Dann wartet das Makro auch automatisch, bis diese Datei geöffnet ist.
Gruß Daniel
Anzeige
AW: Lost in loop
03.08.2022 12:48:55
Dieter
Moin Daniel,
danke für Deine Hilfe. Hier das Ergebnis:

Sub workbook_open()
'2022-08-03
'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 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 & "\"
'center graphics and hide cursor
ActiveSheet.Range("A1").Select
ActiveSheet.Range("BA40").Select
'open master file
Set WinShl = CreateObject("Shell.Application")
WinShl.Open (SysPath & "MstFil" & MstFilNamExt)
'close launcher
'at the end of workbook_open of 'MstFil'
End Sub
Viel code, von dem ich dachte, dass er das Startbild im Vordergrund hält, konnte
entfallen. Statt dessen gehe ich den Umweg siehe 'open master file', bei dem die
Kontrolle an Windows übergeben wird, und der Ladevorgang bleibt damit unter
der Kontrolle von Excel.
Der Ladebildschirm bleibt so lange geöffnet bis 'MstFil' vollstängig geladen und die
workbook_open Routine durchgelaufen ist. Erst am Ende dieser Routine wird der
Start- und Ladebildschirm geschlossen und die Startseite von 'MstFil' erscheint.
Beste Grüße, ich sitze wieder auf dem Fahrrad (Lächelndes icon)
Dieter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige