Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit Workbooks.Open

Forumthread: Probleme mit Workbooks.Open

Probleme mit Workbooks.Open
10.07.2013 08:56:10
kultnoob
Hallo zusammen,
bin gerade ein wenig am programmieren... Um den Code zu testen klicke ich ganz einfach die F8 Taste und das Programm geht Zeile für Zeile durch. Das klappt auch immer ABER...
Innerhalb meines Codes habe ich den Befehl Workbooks.Open...
Sobald die Zeile kommt, rattert das Makro selber durch ABER es werden im Makro Zeilen übersprungen... Zumindest mal mind. eine If-Anweisung.
Meine Aufgabe ist, eine Auswertung zu erstellen die sich Daten aus zwei Exceldateien kopiert. Dabei war angedacht, die Dateien zu öffnen, die Dateien zu kopieren und diese wieder zu schließen.
Anbei die ersten Zeilen des Codes... Pfad und Namen wurden abgeändert...
Private Sub TESCHD()
'Der Auswertungsdatei den Namen Tech zuweisen
Tech = ActiveWorkbook.Name
'Datei 123 öffnen um daraus Daten zu kopieren
Workbooks.Open ("Pfad zur Datei\123.xlsx")
lrow1 = Workbooks("123.xlsx").Sheets(1).UsedRange.Rows.Count
'Der Datei 123 den Namen Anfrage zuweisen
Anfrage = Workbooks("123.xlsx").Name
Bei Worksbooks.open, wenn ich dort bin, rattert das Makro einfach weiter obwohl ich mich bis dahin mit F8 durchgezappt habe. Dann fehlen zwar Daten, aber wenn ich das Makro erneut mit F8 durchklicke, dann springt er zwar immer noch ab Workbooks.Open durch, aber dafür jede Zeile...
So einen Fall hatte ich noch nicht... Googeln brachte mich auch keine Hilfe. Wisst Ihr woran das liegen kann? Vielen Dank für eure Hilfe...

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 08:57:43
Hajo_Zi
setze eine Halte Punkt nach Open.

AW: Probleme mit Workbooks.Open
10.07.2013 09:04:59
kultnoob
Hi Hajo_Zi,
einen Halte Punkt? Einen Haltepunkt setzte ich doch, wenn das Makro (mit F5 gestartet) dort anhalten soll. Ist dann im Code rot markiert.
Oder verstehe ich hier etwas falsch?

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 09:14:12
Hajo_Zi
ja, das meinte ich die rote Markierung.
Gruß Hajo

AW: Probleme mit Workbooks.Open
10.07.2013 09:39:41
kultnoob
Ok, dann funktioniert es doch wie soll ich dann das Makro später ausführen, wenn ich immer Haltepunkte setzen muss.
Innerhalb des Makros muss ich zwei Dateien öffnen.

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 09:41:39
Hajo_Zi
es ging jetzt um die Testung. Im Livebetrieb, brauchen keine Haltepunkte gesetzt werden.
Gruß Hajo

AW: Probleme mit Workbooks.Open
10.07.2013 09:44:50
kultnoob
Ok alles klar...
Mit F5 geht es nicht,
mit F8 und zwei Haltepunkten geht es...

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 09:52:40
Hajo_Zi
vielleicht, reicht eine Pause nach open, mal ein wenig mit der Zeit spielen.
Application.Wait now + TimeSerial(0, 0, 3)
Gruß Hajo

AW: Probleme mit Workbooks.Open
10.07.2013 09:59:34
kultnoob
Diesen Ansatz hatte ich auch schon. Hatte damit auch kein Glück. Habe es aber erneut versucht. Es hat leider nicht funktioniert. Mir stellen sich zwei primäre Fragen.
Erstens:
Warum läuft das Makro nach dem Befehl Workbooks.Open selber weiter obwohl ich mit F8 Zeile für Zeile durchgehe?
Zweitens:
Vielleicht pack ich das Problem falsch an?
Daraus resultiert:
Gibt es eine Möglichkeit, Daten aus einer Datei einzulesen ohne diese Datei zu öffnen oder gibt es eine andere Möglichkeit eine Datei zu öffnen?

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 10:04:20
Hajo_Zi
zu 1 das ist eben in Excel so, das ist normal.
PS
ja
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "A1:B9"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Set wbB = Workbooks.Open(strDatName, UpdateLinks:=False)
Gruß Hajo

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 10:24:29
kultnoob
Ui... kompliziertes Makro. Da muss ich mich erst einmal reinarbeiten. Versuche diesen Code einzubauen. Wird aber eine Weile dauern. Melde mich wenn es klappt und wenn nicht melde ich mich auch... :D
Danke für die Hilfe...

AW: Probleme mit Workbooks.Open
10.07.2013 10:59:54
Luschi
Hallo Hajo,
Deine Antwort zur Frage 1 zeugt davon, daß Du diesen Fall noch nie getestet hast, sonst würdest Du hier nicht solchen Unsinn verbreiten. Beim Schrittfolgen-Debuggen mit 'F8' muß der Debugger schön brav nach dem Öffrnen einer anderen Excel-Datei warten in der nächsten Vba-Zeile.
Hier ein Beweis-Bildchen:
Userbild
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Probleme mit Workbooks.Open
11.07.2013 10:50:50
kultnoob
Hi Luschi,
Hi Hajo,
vielen Dank für die Hilfe. Das Beispiel von Hajo konnte ich leider nicht umsetzen. Aber ich habe eine andere Lösung gefunden. Zwar läuft das Makro nach dem Öffnen der Datei trotz F8 einfach weiter, aber ich habe das Makro einfach in 3 Subs unterteilt. Nach dem Öffnen der ersten Datei werden alle Daten kopiert. Datei wieder schließen und fertig. Im zweiten Sub wird Datei zwei geöffnet und eine If-Anweisung gestartet. Datei schließen und fertig. Im dritten Sub werden dann die Daten bearbeitet und die Auswertung erstellt. Bisher funktioniert alles. Die Subs rufe ich über einen Call Befehl auf wobei ich noch einen Shortcut belegt habe um das Makro auszuführen. Klappt bisher wunderbar.

Anzeige
AW: Probleme mit Workbooks.Open
11.07.2013 12:53:57
Luschi
Hallo kultnoob,
wenn Du an einer bestimmten Stelle im Vba-Code unbeding anhalten willst, dann gibt es ja die F9-Taste, die einen Haltepunkut an der Stelle setzt.
Außerdem gibt es auch noch den Stop-Befehl, der sich wie ein gesetzter Haltepunkt verhält und auf die Weiterführung per F5 oder F8-Taste wartet.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Probleme mit Workbooks.Open
10.07.2013 09:43:57
kultnoob
Es funktioniert aber nur, solange ich nach dem zweiten Haltepunkt mit F8 weiter klicke. Wenn ich mir 2 Haltepunkte setze und diese mit F5 durchklicke, überspringt er mir wieder die IF-Anweisung... Ergbit für mich keinen Sinn.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Probleme mit Workbooks.Open in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne das Visual Basic for Applications (VBA) Fenster: Drücke ALT + F11.

  2. Einfügen eines neuen Moduls: Klicke im Menü auf Einfügen > Modul.

  3. Code eingeben: Verwende den folgenden Code, um eine Excel-Datei mit Workbooks.Open zu öffnen:

    Sub OpenWorkbookExample()
       Dim wb As Workbook
       Set wb = Workbooks.Open("Pfad zur Datei\deine_datei.xlsx")
       ' Hier kannst du weitere Aktionen durchführen
       wb.Close
    End Sub
  4. Makro ausführen: Drücke F5, um das Makro auszuführen und die Datei zu öffnen.

Achte darauf, den Pfad zur Datei korrekt anzugeben.


Häufige Fehler und Lösungen

  • Makro springt über Zeilen: Wenn dein Makro beim Workbooks.Open Befehl automatisch weiterläuft, könnte dies an einer fehlenden Pause oder einem Haltepunkt liegen. Setze einen Haltepunkt (F9) an die Zeile nach dem Open Befehl, um den Code anzuhalten.

  • Fehlende Daten: Überprüfe, ob die Datei, die du öffnest, die erwarteten Daten enthält. Manchmal kann eine falsche Datei oder ein falscher Pfad zu unerwartetem Verhalten führen.

  • Anwendung wartet nicht: Verwende das folgende Code-Snippet, um eine kurze Pause nach dem Öffnen einer Datei einzufügen:

    Application.Wait Now + TimeValue("00:00:03") ' 3 Sekunden warten

Alternative Methoden

Wenn du Daten aus einer Datei lesen möchtest, ohne sie zu öffnen, kannst du die Funktion GetDataClosedWB verwenden, die in einem der Beiträge erwähnt wurde. Hier ist ein Beispiel:

Public Function GetDataClosedWB(SourcePath As String, SourceFile As String, sourceSheet As String, SourceRange As String, TargetRange As Range) As Boolean
    ' Holt einen Bereich aus einer geschlossenen Arbeitsmappe
    Dim strQuelle As String
    On Error GoTo InvalidInput
    strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range(SourceRange).Cells(1, 1).Address(0, 0)
    TargetRange.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
    GetDataClosedWB = True
    Exit Function
InvalidInput:
    MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Fehler"
    GetDataClosedWB = False
End Function

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Workbooks.Open in deinem VBA-Projekt verwenden kannst:

  1. Daten aus mehreren Dateien kopieren:

    Sub CopyDataFromMultipleWorkbooks()
       Dim wb1 As Workbook
       Dim wb2 As Workbook
    
       Set wb1 = Workbooks.Open("Pfad zur Datei\datei1.xlsx")
       Set wb2 = Workbooks.Open("Pfad zur Datei\datei2.xlsx")
    
       ' Kopiere Daten von wb1 nach wb2
       wb1.Sheets(1).Range("A1:B10").Copy wb2.Sheets(1).Range("A1")
    
       wb1.Close False
       wb2.Close True
    End Sub
  2. Daten bearbeiten, nachdem die Datei geöffnet wurde:

    Sub EditOpenedWorkbook()
       Dim wb As Workbook
       Set wb = Workbooks.Open("Pfad zur Datei\deine_datei.xlsx")
    
       ' Bearbeite Daten in der geöffneten Datei
       wb.Sheets(1).Range("A1").Value = "Neuer Wert"
    
       wb.Close True
    End Sub

Tipps für Profis

  • Effiziente Nutzung von Haltepunkten: Verwende Haltepunkte, um den Code an bestimmten Stellen anzuhalten, und nutze die Funktion Stop, um eine Unterbrechung im Code zu erzeugen, die wie ein Haltepunkt funktioniert.

  • Fehlerbehandlung einsetzen: Implementiere Fehlerbehandlung in deinem Code, um mögliche Probleme beim Öffnen von Arbeitsmappen zu vermeiden.

  • Verwende Application.ScreenUpdating = False, um die Aktualisierung des Bildschirms während des Öffnens von Arbeitsmappen zu deaktivieren und so die Leistung zu verbessern. Vergiss nicht, es nach dem Öffnen wieder auf True zu setzen.


FAQ: Häufige Fragen

1. Warum springt mein Makro nach dem Befehl Workbooks.Open einfach weiter?
Das ist ein normales Verhalten in Excel VBA. Um den Code anzuhalten, setze einen Haltepunkt nach der Workbooks.Open Zeile.

2. Kann ich Daten aus einer Datei einlesen, ohne sie zu öffnen?
Ja, du kannst Funktionen wie GetDataClosedWB verwenden, um Daten aus einer geschlossenen Arbeitsmappe zu importieren.

3. Wie kann ich sicherstellen, dass alle Daten korrekt kopiert werden?
Verwende Haltepunkte und debugge deinen Code Schritt für Schritt, um sicherzustellen, dass alle Zeilen korrekt ausgeführt werden.

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