Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
388to392
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
388to392
388to392
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Workbooks(kompletter Datei-/Pfad-Name).Close

Workbooks(kompletter Datei-/Pfad-Name).Close
02.03.2004 09:27:12
Thorsten Becker
Guten Morgen zusammen,
leider hat sich mein Problem gestern nicht mehr lösen lassen, deshalb noch einmal von vorne.
Mein Problem besteht darin, dass ich verschiedene Excel-Dateien automatisch schließen lassen möchte, wenn die Hauptdatei geschlossen wird.
D.h., ich möchte das automatische Schließen in Workbook_BeforeClose() einbinden.
Dabei habe ich in Zellen die Dateinamen mit kompletter Pfadangabe der geöffneten Excel-Dateien stehen. Nun möchte ich mit diesem gesamten Datei-/Pfadnamen über Workbooks("C:\excel\testdatei.xls").Close usw. diese schließen. Doch leider scheint Excel nicht mit dem ganzen Pfadnamen klar zu kommen.
Gibt es eine alternative Schreibweise, z.B. in der Art 'Workbook.Close FileName:="C:\excel\testdatei.xls"', damit der ganze Pfad verwendet werden kann?
Vielen Dank schon jetzt für Eure Antwort(en).
Viele Grüße
Thorsten

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

Betreff
Datum
Anwender
Anzeige
AW: Workbooks(kompletter Datei-/Pfad-Name).Close
02.03.2004 09:37:48
Andreas
Hallo Thorsten,
Wäre es eine möglichkeit die kompletten Pfade einfach in Namen umzuwandeln, z.B mit unterer Funktion
Dein Code wäre dann im Programm:
Workbooks(Name_Extract("C:\excel\testdatei.xls")).Close
Wenn untere Funktion irgendwo im Projekt steht, sollte das ganze gehen.


Function Name_Extract(ByVal strFile As String)
Dim i As Long
'Diese Funktion ermittelt den Namen in einem Pfad,
'Diese Funktion wurde verwendet, da sie Excel 97 tauglich ist
'indem sie von Hinten bis zum ersten "\" zählt
For i = Len(strFile) To 1 Step -1
If Mid(strFile, i, 1) = "\" Then Exit For
Next 'i
'Dann wird der hintere Teil herausgenommen, und als Wert übergeben
Name_Extract = Right(strFile, Len(strFile) - i)
End Function

Grüsse Andreas
Anzeige
Alternativ mit Variablen arbeiten
02.03.2004 09:46:00
Oliver
Hallo Thorsten,
evtl. wird die ganze Sache viel einfacher, wenn Du statt dem Workbook("C:\...") eine Variabele verwendest
Definiere:
public wbDatei as workbok
Dann weise der Variablen das entsprechende Workbook zu:
Set wbDatei = ActiveWorkbook ' oder Alternativ workbooks("C:\...")
Vorteile:
über wbDatei.Name erhälst Du den Namen
das Workbook lässt sich über wbDatei.close False schliessen
das Workbook lässt sich über wbDatei.close True speichern
Viel Erflog,
Oliver
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 10:09:59
Thorsten Becker
Hallo Andreas und Oliver,
danke erst einmal für die schnellen Antworten.
@Andreas: An eine Lösung wie Dein Vorschlag habe ich auch schon gedacht, doch ich möchte nach Möglichkeit Umwandlungen vermeiden, aber wenn es wirklich keine Möglichkeit gibt, mit dem ganzen Pfad zu arbeiten, werde ich wohl notgedrungen darauf zurückgreifen müssen.
Besten Dank nochmal.
@Oliver
Ich habe schon verschiedene Konstellationen mit Variablen versucht, doch bisher wurde immer eine Fehlermeldung angezeigt. Wenn ich nun Deinen Vorschlag verwende und zwar in der folgenden Form:

Sub test()
Dim wbDatei As Workbook
Set wbDatei = Workbooks("C:\excel\testdatei.xls")
wbDatei.Close False
End Sub

... bekomme ich immer den Laufzeitfehler '9': Index außerhalb des gültigen Bereichs. Hast Du oder jemand anderes vielleicht noch eine Idee, was ich ändern muss? Im Übrigen liegt der Dateiname als String in der Zelle vor.
Besten Dank und viele Grüße
Thorsten
Anzeige
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 10:16:59
Kerstin
Hallo Thorsten,
Ich muss mich doch noch einmal melden, versuch mal meinen Vorschlag von gestern abend:
Dim wbdatei As Workbook
Set wbdatei = Workbooks.Open("C:\temp\mappe2.xls")
wbdatei.Close
Das funktioniert auch, wenn die Datei schon geöffnet ist.
Gruß
Kerstin
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 10:27:09
Thorsten Becker
Hallo Kerstin,
danke nochmal für Deine Hilfe.
Du hast auf jeden Fall recht, was das abschließende Schließen der Datei angeht. Das funktioniert. Doch leider ist es ja bei Workbooks.Open so, dass Excel, zumindest bei mir, versucht, die Datei zu öffnen. Normalerweise ist die Datei allerdings geöffnet, das wird beim Öffnen der Hauptdatei sichergestellt.
Das Merkwürdige dort ist, dass bei mir bisher Workbooks.Close FileName:=... nicht funktioniert, dagegen Workbooks.Open FileName:="C:\excel\testdatei.xls" jedoch einwandfrei.
Und wenn ich dann ein weiteres Mal Workbooks.Open ausführe, fragt mich Excel, ob ich das denn wirklich will, da alle bisherigen Änderungen in der bereits geöffneten Datei verloren gehen. Deshalb scheint mir der Weg über ein weiteres Workbooks.Open nicht möglich. Oder stehe ich auf der Leitung?
Viele Grüße
Thorsten
Anzeige
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 11:10:24
Kerstin
Ich verstehe, was du meinst, aber ich habe es sowohl unter Excel 97 als auch unter Excel XP versucht. Wenn ich das eingebe, wird eben nicht noch eine Datei geöffnet:
Dim wbdatei As Workbook
Set wbdatei = Workbooks.Open("C:\temp\mappe2.xls")
Ansonsten weiß ich auch nicht mehr weiter :-(
Kerstin
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 11:30:08
Oliver
Hallo Thorsten und Kerstin,
bei geöffneten Workbooks gehe nutze ich immer erst activate und weise dann der Variablen den folgenden Befehl:
Set wbDatei = ActiveWorkbook
Beim Schließen bestehen nun verschiedene Alternativen.
wbDatei.Close True ' Hier OHNE Dateinamen, da der vorhandene Name erhalten bleibt
wbDatei.Close False ' Hier wird KEIN Dateiname benötigt, da wir ja nur schließen ohne zu speichern
wbDatei.saveas .... ' wenn ein neuer Dateiname vergeben werden soll. Dann wbDatei.Close False
Hab ich das Problem richtig verstanden?
Grüße,
Oliver
Anzeige
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 12:08:02
Thorsten Becker
Hallo Ihr Beiden,
@Kerstin:
Mmh, zumindest fragt er nach Aktualisierung, da in den Dateien externe Bezüge vorhanden sind. Und normalerweise würde ich die ja über UpdateLinks:=0 ausschalten, was jedoch bei Verwendung von SET wbdatei... nicht möglich ist. Wenn sich das noch ausschalten ließe, würde es ja vielleicht wirklich funktionieren.
@Oliver:
Es geht nicht direkt um die verschiedenen Alternativen beim Schließen einer Datei, ob nun mit Speichern oder ohne, sondern dass ich eigentlich schreiben möchte: Workbooks("C:\excel\testdatei.xls").Close. Bei Verwendung des gesamten Pfadnamens jedoch streikt Excel. Und hier setzt meine Frage an, wie ich Workbooks("C:\excel\testdatei.xls").Close modifizieren kann, damit ganze Pfadangaben akzeptiert werden. Denn bei Workbooks.Open gibt es die Möglichkeit, mit FileName:"C:\excel\testdatei.xls" zu arbeiten.
Aber so langsam resigniere ich dann doch ...
Viele Grüße
Thorsten
Anzeige
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 12:20:03
Oliver
Hallo Thorsten,
zu @Kerstin: das Update von Links funktioniert auch in Verbindung mit Set. Es ändert sich lediglich die Schreibweise: Set wbDatei = Workbooks.Open(dateiname, False, True)
zu @Oliver: Wenn Du über eine Variable arbeiten würdest, bräuchtest Du kein Verzeichnis beim schließen anzugeben. Allerdings hättest Du weiterhin die Möglichkeit das Verzeichnis z.B. zum Speichern zu verwenden - wbDatei.Saveas ("C:\Test\Test.xls").
Weiterhin könntest Du alternatv mit index arbeiten

Sub wbClose(pfad as string)
for i=1 to workbooks.count
if (workbooks(i).path & "\" & workbooks(i).name) = pfad then
workbooks(i).close false
exit sub
end if
next i
End Sub


Grüße,
Oliver
Anzeige
AW: Vielen Dank, so klappt es!!
02.03.2004 13:56:51
Thorsten Becker
Hallo Oliver,
ich denke, diese Lösung ist das Optimalste, was möglich ist. Vielen Dank für Deinen Einsatz.
@Kerstin:
Auch Dir vielen Dank für die Mühen, es ist schön, wenn man soviel Unterstützung bekommt.
Einen schönen Tag noch und bis zum nächsten Problem ;-) .
Viele Grüße
Thorsten
@Oliver
02.03.2004 12:12:00
Kerstin
Hallo Oliver,
ja, du hast es richtig verstanden, aber so wie ich Thorsten verstanden habe, will er nicht das aktive Workbook der Variable zuweisen, sondern die Datei mit Pfadangabe. Und das geht meines Wissens nur mit
Set wbdatei = Workbooks.Open("C:\....xls")
Die Frage ist, ob es noch eine andere Möglichkeit gibt, der Variable den Pfadnamen mitzugeben.
Gruß
Kerstin
Anzeige
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 11:42:26
Oliver
Hallo,
noch ein Nachtrag zu bereits geöffneten Dateien. Angenommen es sind mehrere Arbeitmappen bereits geöffnet: In diesem Fall sind die Verzeichnisse völlig irrelevant. Es reicht die Nummmer (index) oder der Name.
Beispiel: Es sind 2 Workbooks geöffnet Mappe1.xls und Mappe2.xls. Wir wollen Mappe2.xls der Variablen zuweisen. Der Befehl lautet
dim wbDatei as workbook
Set wbDatei = Workbooks("Mappe2")
Wenn ich jetzt den Pfad oder Dateinamen wissen will kann ich folgende Befehle nutzen
wbDatei.Name
wbDatei.Path
Grüße,
Oliver
AW: Alt. mit Variablen arbeiten - Fehlermeldung
02.03.2004 12:14:20
Thorsten Becker
Hallo Oliver,
ich habe ja schon beim Öffnen der Hauptdatei die anderen Dateien ebenfalls geöffnet und mir steht nun in Zellen als String der Pfad+Dateiname (z.B. "C:\excel\testdatei.xls") zur Verfügung. Auf diesen String möchte ich zurückgreifen um diese Dateien anzusprechen und zu schließen. Da bei uns meistens sehr viele Excel-Dateien auf Mal geöffnet sind und ich sicherstellen möchte, dass ich nicht die falschen erwische und versehentlich schließe, möchte ich auf die Pfad+Dateinamen in den Zellen zurückgreifen. Dahinter steht der Gedanke, unnötige Umformungen usw., die ja immer ein gewisses Fehlerpotential mitbringen, zu unterlassen und nur mit Quelldaten, wie z.B. diesem String "C:\...", zu arbeiten.
Wenn alles nichts nützt, werde ich wohl per Makro den Dateinamen aus dem String extrahieren müssen, wobei ja auch das eine Umformung darstellt.
Aber schon mal vielen Dank für Dein Engagement.
Viele Grüße
Thorsten
Anzeige
Sub über Index
02.03.2004 12:24:40
Oliver
Hallo Thorsten,
wahrscheinlich hilft Dir die Sub in meiner Antwort von 12:20:03, die ich paralell zu Deiner obigen Mail geschrieben haben.
Viel Erfolg,
Oliver

17 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige