Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Datei schließen über Variable
17.03.2006 21:02:40
Thomas
Hallo Excel-Freunde,
manchmal sind es die scheinbar simplen Dinge, an denen man trotz schlauer Bücher scheitert. Wer kann mir helfen?
Innerhalb einer umfangreicheren VBA-Anwendung gibt es eine selbstgestrickte Dateiverwaltung. Verschiedene Dateien werden erzeugt, in das Modul geladen, gespeichert, gelöscht usw. Bei bestimmten Konstellationen im Ablauf muss ich sicher gehen, dass die Datei vor dem Löschen geschlossen wird - sonst gibt es eine entsprechende Fehlermeldung. Da es verschiedene Dateien sind, wird der Dateiname beim Erzeugen oder Laden über eine Listbox in Variablen (Pfad und Dateiname, getrennt und auch in einer Variablen. Hier: lDatei) gespeichert. Es funktioniert alles ganz gut - bis auf das Schließen. Ich bekomme einfach keinen Code zustande, mit dem ich die in der Variable benannte Datei schließen kann. Schreibweisen wie "Workbooks(lDatei).Close" funktionieren jedenfalls nicht. Es muss nicht immer die gerade aktive Datei sein, deshalb wäre "ActiveWorkbook.Close" oft falsch. Für den Fall, dass die Datei, die ich schließen will, die aktive ist, habe ich mir mit folgendem Code geholfen:
If ActiveWorkbook.FullName = lDatei Then ActiveWorkbook.Close
Löschen ist ja wieder ganz einfach: "Kill lDatei"
Ich weiß einfach nicht weiter. Vermutlich ist es einfacher, als man denkt.
Vielen Dank schon mal.
Thomas

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei schließen über Variable
17.03.2006 21:06:07
Ramses
Hallo
"...Schreibweisen wie "Workbooks(lDatei).Close" funktionieren jedenfalls nicht...."
Warum sollte dies nicht funktionieren ?
Erhältst du eine Fehlermeldung ?
Gruss Rainer
AW: Datei schließen über Variable
17.03.2006 22:04:48
Thomas
Hallo Rainer,
es gibt keine Fehlermeldung, aber die Datei wird auch nicht geschlossen.
Gruß
Thomas
AW: Datei schließen über Variable
17.03.2006 22:20:56
Ramses
Hallo
"...aber die Datei wird auch nicht geschlossen..."
Das ist nicht nachvollziehbar.

Sub Close_Other_Workbooks()
Dim wb As Workbook
For Each wb In Application.Workbooks
If wb.Name <> ThisWorkbook.Name and wb.Name <> "Personl.xls" Then
wb.Close False
End If
Next
End Sub

Damit wird JEDE offene Mappe geschlossen, ausser der aktiven.
Daher ist das von dir beschriebene Problem nicht nachvollziehbar.
Ist deine Variable gültig und enthält den richtigen WErt ?
Gruss Rainer
Anzeige
AW: Datei schließen über Variable
17.03.2006 22:38:16
Thomas
Hallo Rainer,
jede Mappe schließen außer der aktiven ist nicht die Lösung, denn mindestens 2 Mappen + Personl.xls bleiben immer offen. Mit dem Inhalt der Variablen habe ich auch schon experimentiert. Pfad + Dateiname wie beim Lösch-Befehl habe ich genauso probiert wie den reinen Dateinamen. Immer kommt hinterher die Fehlermeldung beim Löschbefehl "Zugriff verweigert" - weil eben nicht geschlossen. Was wäre eigentlich richtig? Ich bin hier einfach ratlos.
Gruß
Thomas
AW: Datei schließen über Variable
17.03.2006 22:53:27
Ramses
Hallo
Das Beispiel sollte nur zeigen, DASS das Verfahren funktioniert.
Ich behaupte nun:
Dein Code ist fehlerhaft bzw. die Variable ist mit einem falschen Wert gefüllt.
Eine offene Datei kannst du natürlich nicht löschen,.... zumindest nicht vordergründig.
With Workbooks(DeineVariable)
.ChangeFileAccess xlreadOnly
.Close False
End With
Kill Workbooks(DeineVariable_mit_Pfad)

Gruss Rainer
Anzeige
AW: Datei schließen über Variable
17.03.2006 23:15:08
Thomas
Hallo,
vermutlich ist mein Code wirklich falsch. Aber ich habe schon allerlei versucht. Normalerweise steht ja "Datei.xls" an dieser Stelle. Genauso habe ich die Variable belegt und es funktioniert nicht. Deinen Code verstehe ich nicht auf Anhieb. Da muss ich mich noch belesen. Vermutlich gehört es zu den FSO-Bibliothek. Das habe ich bisher nicht drauf. Ich werde es mal so versuchen.
Gruß
Thomas
AW: Datei schließen über Variable
17.03.2006 23:22:00
Ramses
Hallo
Das hat mit dem FileSystemObject nichts zu tun.
Wenn du die Datei geöffnet hast, kannst du diese nicht löschen. Das ist nun mal so.
Also änderst du den FileAccessStatus der Datei auf "ReadOnly", dann kannst du diese auch löschen, weil der Schreibzugriff der Application gelöscht wird, die Datei also frei ist.
If ActiveWorkbook.FullName = lDatei Then ActiveWorkbook.Close
Kann nicht funktionieren, weil "FullName" den Namen inclusive Pfad zurückgibt, deine Variable aber wahrscheinlich NUR den Dateinamen "Datei.xls" hat.
Zeig mal deinen ganzen Code.
Alles andere führt sonst zu nichts.
Gruss Rainer
Anzeige
AW: Datei schließen über Variable
17.03.2006 23:43:57
Thomas
Hallo,
das mit dem gesamten Code funktioniert leider nicht, da mein Programm mehrere Module und Userforms umfasst.
Mein Löschmodul sieht komplett so aus:

Sub DateiLöschen()
Dim lDatei As String
lDatei = ModulDateien.Speicherpfad & "\" & fmÖffnen.LBoxDateien
'Prüfen, ob zu löschende Datei geöffnet ist
If ActiveWorkbook.FullName = lDatei Then
ActiveWorkbook.Close
ModulDateien.DateiOffen = False
ModulDateien.DateiAngelegt = False
End If
'Workbooks(fmÖffnen.LBoxDateien).Close
'With Workbooks(fmÖffnen.LBoxDateien)
'.ChangeFileAccess xlReadOnly
'.Close False
'End With
'Löschen
Kill lDatei
End Sub

Dazwischen stehen auch die Zeilen von Dir, jetzt auskommentiert. Damit kommt die Fehlermeldung "Typen unverträglich". Den eigentlichen Dateinamen lese ich aus einer Listbox aus, in der nur der tatsächliche Dateinamen ohne Pfad angezeigt wird. Ich denke, dass ist so als Fragment ziemlich schwierig rüber zu bringen.
Im Debug-Modus sehe ich ja, dass der Variablen-Inhalt genau meinen Erwartungen enntspricht. Aber es nützt halt nichts.
Vielen Dank jedenfalls für Deine Mühe.
Thomas
Anzeige
AW: Datei schließen über Variable
17.03.2006 23:50:37
Ramses
Hallo
If ActiveWorkbook.FullName = lDatei Then
Damit vergleichst du doch IMMER NUR den Namen der Datei aus der das Makro kommt mit dem Namen aus der Listbox.
Wenn ich dein Makro versuche zu verstehen, kann das NIEMALS der Fall sein
Wenn ein Typfehler kommt, stimmen deine Variablen nicht.
Gruss Rainer
AW: Datei schließen über Variable
17.03.2006 23:59:53
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
AW: Datei schließen über Variable
18.03.2006 00:00:01
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
Anzeige
AW: Datei schließen über Variable
18.03.2006 00:00:24
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
AW: Datei schließen über Variable
18.03.2006 00:01:11
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
AW: Datei schließen über Variable
18.03.2006 00:01:15
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
Anzeige
AW: Datei schließen über Variable
18.03.2006 00:01:16
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
AW: Datei schließen über Variable
18.03.2006 00:01:17
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas
AW: Datei schließen über Variable
18.03.2006 00:19:37
Ramses
Hallo
":..ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht..."
Das sage ich doch.
ThisWorkbook bezieht sich auf die Datei, in der das makro läuft.
Aber die wirst du ja wohl nicht schliessen wollen,... oder ?
"...Verträgt der Code von Dir String als Datentyp?..."
Eigentlich schon :-)
Kannst du die Datei nicht mal hochladen ?
Gruss Rainer
Anzeige
AW: Datei schließen über Variable
18.03.2006 00:01:17
Thomas
Hallo,
ich glaube, hier irrst Du, denn mit ThisWorkbook wird die Datei angesprochen, in der der Code steht. Und soweit funktioniert der Code ja auch. Verträgt der Code von Dir String als Datentyp? Ich gebe langsam auf....
Thomas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige