Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aus VBA heraus Dateien öffnen und schließen

Aus VBA heraus Dateien öffnen und schließen
20.07.2005 08:11:55
danika
Hallo Leute!
Kann ich aus VBA heraus andere Dateien öffnen und schließen?
Ich habe eine Excel-Datei mit einer Prozedur, die auf Daten einer anderen Excel-Datei zugreift. Was ist, wenn diese nicht vorher geöffnet wurde? Dann muss sie doch explizit geöffnet werden? Oder nicht? Ist das möglich? Die Methode ACTIVATE kann doch nur auf schon geöffnete Dateien angewandt werden?
Genauso ist es doch mit dem Datei-Schließen?!
LG
Danika
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Aus VBA heraus Dateien öffnen und schließen
20.07.2005 08:16:54
Matthias
Hallo Danika,

Workbooks.Open Filename:="C:\test\deine Datei.xls"
Workbooks("deine Datei.xls").Close

Gruß Matthias
AW: Aus VBA heraus Dateien öffnen und schließen
20.07.2005 08:38:48
danika
Hallo Matthias,
danke für die flotte Antwort.
Frage: Warum Blank zwischen "deine" und "Datei.xls"?
Frage: Wenn ich mehrere Dateien öffne und dann jeweils auf eine ganz bestimmte zugreifen möchte, muss ich sie doch vorher mit Activate ansprechen?
Kurzbeschreibung meiner Aufgabe:
Soll Bericht erstellen, in dem mehrere Excel-Diagramme vorkommen. Diese werden aus Daten, die in unterschiedlichen Dateien abgelegt sind, generiert. Gemeinsam ist allen Daten ein Namensfeld, ein Datumsfeld und ein weiteres kundenspezifisches Auftragsfeld. Ich filter meine Dateien also immer erst nach dem Kundennamen, dann nach dem Datum und zum Schluss nach dem kundenspezifischen Auftragsfeld.
(Ich glaube, das klingt nach PIVOT-Tabelle, aber nachdem ich mich jetzt 2 Tage lang damit rumgeschlagen habe, werde ich mein Problem anderweitig lösen.)
Auf jeden Fall muss ich die unterschiedlichen Dateien nacheinander ansprechen und Diagramme erstellen (manchmal aus einer Datei in Abhängigkeit verschiedenere Kriterien mehrere Diagramme).
Ich erzähle das an dieser Stelle, weil Dir ja möglicherweise ganz spontan ein guter Lösungsansatz einfällt.
Danke nochmals und ciao
danika
Anzeige
AW: Aus VBA heraus Dateien öffnen und schließen
20.07.2005 09:08:38
Reinhard
Hi Danika,
der Blank ist für Excel unerheblich, ist grammatikalischer Natur, man schreibt halt meist "dein Haus" und nicht "deinHaus".
Öffnen könntest du so (schliessen in gleicher Weise):
dateien=array("datei1","datei2")
for n=0 to ubound(dateien)
workbooks.open filename:="c:\test\" & dateien(n) & ".xls"
next n
Dann zeichnest du ein Makro auf während du das Diagramm bastelst...
Activate brauchst du nicht.
Wenn du nicht klarkommst, melde dich noch mal...
Gruß
Reinhard
Anzeige
AW: Aus VBA heraus Dateien öffnen und schließen
20.07.2005 09:47:28
danika
hallo Reinhard,
danke für Deine Antwort. Als Anfängerin muss ich mich erst mal hinsetzen und Deinen Vorschlag durchdenken; das wird eine Weile dauern.
Habe mich jetzt gerade erst einmal an die Antwort von Matthias gehalten und es hat funktioniert.
ABER: Da ich sehr lange Pfadangaben habe, die das Ganze recht unübersichtlich machen, wollte ich die Dateien erst einmal referenzieren
Dim wbTS As Workbook
Set wbTS = Workbooks("C:\Dokumente und Einstellungen\Administrator\Desktop\UVZ1\Berichte\" & _
"RomansDateien\TS.xls")
Workbooks.Open Filename:="wbTS"

Und damit kam er jetzt überhaupt nicht klar. Wo liegt hier der Fehler?
lg
dani
Anzeige
AW: Aus VBA heraus Dateien öffnen und schließen
20.07.2005 10:47:06
Matthias
Hallo Danika,
ein Workbook kann erst referenziert werden, wenn es geöffnet ist:

Dim fn As String
Dim wbTS As Workbook
fn = "C:\Dokumente und Einstellungen\Administrator\Desktop\UVZ1\Berichte\" & _
"RomansDateien\TS.xls"
Workbooks.Open fn
Set wbTS = ActiveWorkbook

Weil, nach dem Öffnen ist die geöffnete Mappe erstmal die aktive.
Gruß Matthias
Anzeige
AW: Aus VBA heraus Dateien öffnen und schließen
danika
super! danke!
dani

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateien in Excel VBA öffnen und schließen


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei aus VBA heraus zu öffnen, kannst Du den folgenden Code verwenden:

Workbooks.Open Filename:="C:\dein\pfad\datei.xlsx"

Um eine geöffnete Datei wieder zu schließen, kannst Du diesen Befehl verwenden:

Workbooks("datei.xlsx").Close

Wenn Du mehrere Dateien nacheinander öffnen möchtest, kannst Du dies mit einer Schleife tun:

Dim dateien As Variant
dateien = Array("datei1", "datei2")

For n = 0 To UBound(dateien)
    Workbooks.Open Filename:="C:\test\" & dateien(n) & ".xls"
Next n

Wenn Du eine Datei mit einem langen Pfad öffnen möchtest, kannst Du dies wie folgt tun:

Dim fn As String
fn = "C:\Dokumente und Einstellungen\Administrator\Desktop\UVZ1\Berichte\RomansDateien\TS.xls"
Workbooks.Open fn

Häufige Fehler und Lösungen

Ein häufiger Fehler beim Öffnen einer Datei ist die falsche Verwendung von Anführungszeichen oder Leerzeichen im Dateinamen. Achte darauf, dass der Dateiname exakt geschrieben ist. Außerdem kann es sein, dass Du die Datei nicht finden kannst, wenn der Pfad nicht korrekt angegeben ist.

Wenn Du versuchst, eine Datei zu referenzieren, bevor sie geöffnet wurde, wie hier:

Set wbTS = Workbooks("C:\dein\pfad\datei.xlsx")

wird dies nicht funktionieren. Stelle sicher, dass die Datei zuerst mit Workbooks.Open geöffnet wird.


Alternative Methoden

Eine alternative Methode, um eine Excel-Datei zu öffnen, besteht darin, die Workbooks.Open-Methode in Kombination mit einer Variable zu verwenden:

Dim wb As Workbook
Set wb = Workbooks.Open("C:\dein\pfad\datei.xlsx")

Wenn Du die Datei nicht nur öffnen, sondern auch Daten auslesen möchtest, kannst Du die Datei wie folgt öffnen und anschließend auf die Daten zugreifen:

Dim wb As Workbook
Set wb = Workbooks.Open("C:\dein\pfad\datei.xlsx")

' Zugriff auf eine bestimmte Zelle
Dim wert As Variant
wert = wb.Sheets(1).Cells(1, 1).Value

Praktische Beispiele

Ein praktisches Beispiel für das Öffnen und Schließen von Dateien könnte das Erstellen eines Berichts aus mehreren Excel-Diagrammen sein. Du kannst alle nötigen Daten in einer Schleife verarbeiten:

Dim dateien As Variant
dateien = Array("bericht1", "bericht2")

For n = 0 To UBound(dateien)
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\berichte\" & dateien(n) & ".xlsx")

    ' Diagramm erstellen
    ' ...

    wb.Close SaveChanges:=True
Next n

Tipps für Profis

  1. Fehlerbehandlung: Füge Error-Handling in deinen Code ein, um Probleme beim Öffnen oder Schließen von Dateien zu vermeiden.

    On Error Resume Next
    Workbooks.Open "C:\dein\pfad\datei.xlsx"
    If Err.Number <> 0 Then
       MsgBox "Fehler beim Öffnen der Datei."
    End If
    On Error GoTo 0
  2. Benutze ActiveWorkbook: Wenn du gerade eine Datei geöffnet hast, kannst du ActiveWorkbook nutzen, um sie in deinem Code zu referenzieren, ohne den Namen zu kennen.

  3. Speichern vor dem Schließen: Überlege, ob Du die Datei vor dem Schließen speichern möchtest, um Änderungen nicht zu verlieren:

    wb.Close SaveChanges:=True

FAQ: Häufige Fragen

1. Frage: Kann ich eine Datei öffnen, wenn sie sich nicht im gleichen Verzeichnis wie mein Makro befindet?
Ja, Du kannst eine Datei öffnen, indem Du den vollständigen Pfad angibst.

2. Frage: Wie schließe ich alle geöffneten Dateien auf einmal?
Du kannst eine Schleife verwenden, um alle geöffneten Arbeitsmappen zu schließen:

Dim wb As Workbook
For Each wb In Workbooks
    wb.Close SaveChanges:=False
Next wb

3. Frage: Was mache ich, wenn ich die Datei nicht finden kann?
Überprüfe den angegebenen Pfad und den Dateinamen auf Tippfehler oder falsche Pfade. Achte auch darauf, dass die Datei nicht geöffnet ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige