Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Warten bis Datei geöffnet

Forumthread: VBA - Warten bis Datei geöffnet

VBA - Warten bis Datei geöffnet
24.10.2006 08:03:51
marc81
Hallo Leute,
ich habe schon ausgiebig im Forum gesucht, aber leider keine Lösung für mein Problem gefunden.
Ich habe ein Makro das eine Datei öffnet und anschließend die Fenster horizontal anordnet. Mein Problem ist jetzt, dass mein Makro nicht wartet bis die Datei geöffnet ist, und somit auch die Fenster nicht anordnet weil nur eine Datei geöffnet ist wenn das Makro durchläuft.
Hier ist der Code:

Sub naechste_KW()
ActiveWorkbook.Sheets(Sheets.Count).Copy _
After:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveWorkbook.Sheets(Sheets.Count).Name = _
"KW" & Sheets.Count + 1
Range(Range("A65536").End(xlUp).Offset(1, 3), "H3").ClearContents
Range("D3").Select
'Hier öffnet er jetzt meine andere Datei
Workbooks.Open FileName:= _
"D:\Dürr\Formulare\Stunden-Berechnung\Stunden-Berechnung_2006.xls"
'und hier müsste er warten, bis die Datei dann tatsächlich offen ist
Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub

Vielen Dank schon mal!
Grüße Marc
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Warten bis Datei geöffnet
24.10.2006 10:52:14
fcs
Hallo Marc,
ergänze nach der Öffen-Anweisung eine Schleife die Prüft, ob die Arbeitsmappee geöffnet ist.

Sub naechste_KW()
ActiveWorkbook.Sheets(Sheets.Count).Copy _
After:=ActiveWorkbook.Sheets(Sheets.Count)
ActiveWorkbook.Sheets(Sheets.Count).Name = _
"KW" & Sheets.Count + 1
Range(Range("A65536").End(xlUp).Offset(1, 3), "H3").ClearContents
Range("D3").Select
'Hier öffnet er jetzt meine andere Datei
Workbooks.Open Filename:= _
"D:\Dürr\Formulare\Stunden-Berechnung\Stunden-Berechnung_2006.xls"
'und hier müsste er warten, bis die Datei dann tatsächlich offen ist
geladen = False
Do
For Each wb In Workbooks
If wb.Name = "Stunden-Berechnung_2006.xls" Then geladen = True
Next wb
Loop Until geladen = True
Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub

Gruß
Franz
Anzeige
AW: VBA - Warten bis Datei geöffnet
24.10.2006 11:46:26
Marc81
Hallo Franz
schon mal vielen Dank!
Der Befehl ist es, damit geht es super.
Jetzt habe ich aber noch eine Frage. Wenn ich das Makro über das Makro-Fenster aufrufe (Extras - Makro - Makros...) funktioniert es ohne Probleme.
Ich habe jetzt aber auch einen Shortcut (STRG + Umschalt + W) eingerichtet. Rufe ich mein Makro über diesen auf, funktioiert es ebenfalls, aber er ordnet die Fenster nicht horizontal an?!
Hast du da auch noch eine Antwort!
Gruß Marc
Anzeige
AW: VBA - Warten bis Datei geöffnet
24.10.2006 12:51:04
quiz206
Hallo Marc,
bei mir triit das gleich Phänomen auf. Bei Start über Tastenkombination erfolgt einfach keine Anordnung untereinander.
Abhilfe weiss ich leider keine.
Gruß
Franz
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Warten bis Datei geöffnet ist


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu warten, bis eine Datei geöffnet ist, kannst Du den folgenden Code verwenden. Dieser Code integriert eine Schleife, die prüft, ob die Datei erfolgreich geöffnet wurde, bevor die Fensteranordnung erfolgt:

Sub naechste_KW()
    ActiveWorkbook.Sheets(Sheets.Count).Copy _
    After:=ActiveWorkbook.Sheets(Sheets.Count)
    ActiveWorkbook.Sheets(Sheets.Count).Name = _
    "KW" & Sheets.Count + 1
    Range(Range("A65536").End(xlUp).Offset(1, 3), "H3").ClearContents
    Range("D3").Select

    ' Hier öffnet er jetzt meine andere Datei
    Workbooks.Open FileName:= _
    "D:\Dürr\Formulare\Stunden-Berechnung\Stunden-Berechnung_2006.xls"

    ' Hier wird gewartet, bis die Datei geöffnet ist
    geladen = False
    Do
        For Each wb In Workbooks
            If wb.Name = "Stunden-Berechnung_2006.xls" Then geladen = True
        Next wb
    Loop Until geladen = True

    Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub

Häufige Fehler und Lösungen

  1. Fensteranordnung funktioniert nicht: Wenn Du das Makro über einen Shortcut aufrufst und die Fensteranordnung nicht funktioniert, könnte es daran liegen, dass die Anordnung nicht richtig ausgeführt wird, bevor das Makro endet. Achte darauf, dass die Bedingungen zum Warten korrekt gesetzt sind.

  2. Datei wurde nicht gefunden: Überprüfe den Dateipfad und den Dateinamen. Eine falsche Schreibweise oder ein nicht existierender Pfad kann dazu führen, dass die Datei nicht geöffnet werden kann.


Alternative Methoden

Eine alternative Methode, um sicherzustellen, dass das Makro wartet, bis die Datei geöffnet ist, besteht darin, die Sleep-Funktion zu verwenden. Diese Methode ist jedoch weniger elegant, da sie einfach eine festgelegte Zeit wartet, anstatt aktiv zu prüfen, ob die Datei geöffnet ist.

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub naechste_KW()
    ' ... (Dein bestehender Code)
    Workbooks.Open FileName:= _
    "D:\Dürr\Formulare\Stunden-Berechnung\Stunden-Berechnung_2006.xls"

    ' Warten für 2 Sekunden (2000 Millisekunden)
    Sleep 2000

    Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub

Diese Methode ist einfacher, bietet jedoch nicht die Flexibilität der ersten Lösung.


Praktische Beispiele

Angenommen, Du hast einen weiteren Dateinamen, den Du prüfen möchtest:

Sub andere_Datei_oeffnen()
    Workbooks.Open FileName:= _
    "D:\Dürr\Formulare\Andere-Datei.xls"

    geladen = False
    Do
        For Each wb In Workbooks
            If wb.Name = "Andere-Datei.xls" Then geladen = True
        Next wb
    Loop Until geladen = True

    Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub

Durch diese Anpassung kannst Du diese Struktur für verschiedene Dateien nutzen.


Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Füge Fehlerbehandlung hinzu, um sicherzustellen, dass das Makro nicht abstürzt, wenn etwas Unerwartetes auftritt:
On Error Resume Next
' Dein Code hier
On Error GoTo 0
  • Teste Deinen Code immer in einer sicheren Umgebung, bevor Du ihn in wichtigen Arbeitsmappen ausführst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Datei wirklich geöffnet ist?
Verwende die Schleife, die im Beispielcode integriert ist. So wird aktiv geprüft, ob die Datei in der Liste der geöffneten Arbeitsmappen vorhanden ist.

2. Warum funktioniert die Fensteranordnung nicht bei der Verwendung von Shortcuts?
Das kann passieren, wenn das Makro nicht in der Lage ist, die Fensteranordnung rechtzeitig auszuführen. Stelle sicher, dass das Warten auf die Datei korrekt implementiert ist und teste den Ablauf ohne Shortcut.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige