Supportnet / Forum / Tabellenkalkulation
Variabler Dateiname aus variablem Ordner öffnen
Frage
Hi,
meine dateien sind immer in unterordnern angelegt die den gleichen namen wie die datei haben.
also z.B.
111.xls liegt im Verzeichnis X:\111\111.xls
aaa.xls liegt im Verzeichnis X:\aaa\aaa.xls
Ich öffne diese Datien über eine Inputbox in Excel und das funktioniert auch wunderbar.
Doch jetzt bin ich auf ein Problem gestoßen.
Ich habe festgestellt, dass wenn änderungen an den Dateien vorgenommen wurden diese Dateien nicht überschrieben wurden, sondern in einem Neuen Ordner abgelegt worden sind.
Sagen wir die Datei (aaa.xls) aus dem obigen beispiel wurde einmal verändert. dann liegt diese datei nichtmehr im verzeichniss
X:\aaa\aaa.xls
sondern in
X:\aaa_2\aaa.xls (Dateiname bleibt unverändert)
wenn sie sagen wir 12 mal verändert wurde dann entsprechend
X:\aaa_12\aaa.xls
Ich hätte jetzt gerne das excel mir die neueste aaa.xls öffnet.
Mein ihr so etwas geht?
Ich öffne die dateien über diesen code:
[code]Sub auto_open()
Dim strTeilname As String
strTeilname = InputBox("Bitte ID eingeben", "Abfrage")
If strTeilname = "" Then Exit Sub
Workbooks.Open "X:\Test\" & strTeilname & "\" & strTeilname & ".xls"[/code]
Bitte helft mir.
Danke
Antwort 1 von Seradest
Hallo,
du kannst mit einem
Application.FileSearch
nach Dateien suchen (guck dir mal die Hilfe zu FileSearch an, die dürfte dir zumindest erstmal helfen alle Dateien mit nem bestimmten Namen zu finden). Das Object kann dir den Pfad als String zu jeder Datei anzeigen die z.B. den Namen "aaa" trägt. Mit etwas String-Analyse kannst du dann den aktuellsten Ordner ermitteln.
Alternativ kannst du mit einem FileSystemObject arbeiten, damit kenn ich mich allerdings nicht aus.
Grüße
du kannst mit einem
Application.FileSearch
nach Dateien suchen (guck dir mal die Hilfe zu FileSearch an, die dürfte dir zumindest erstmal helfen alle Dateien mit nem bestimmten Namen zu finden). Das Object kann dir den Pfad als String zu jeder Datei anzeigen die z.B. den Namen "aaa" trägt. Mit etwas String-Analyse kannst du dann den aktuellsten Ordner ermitteln.
Alternativ kannst du mit einem FileSystemObject arbeiten, damit kenn ich mich allerdings nicht aus.
Grüße
Antwort 2 von coros
Hallo Joe1972,
wenn ich davon ausgehe, dass der neuste Ordnername immer der mit der höchsten Zahl am Ende ist, sollte das mit nachfolgendem Makro funktionieren.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.
Hier wird das Verzeichnis, was in der Zeile "Pfad = "X:\Test\"
" angegeben wird, nach dem Teilverzeichnisnamen, der in der Eingabebox eingetragen wurde, gesucht. Wenn gefunden, wird die Variable "iNummer" um den Wert 1 erhöht. Am Ende wird das Ganze nur zusammengestzt.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
wenn ich davon ausgehe, dass der neuste Ordnername immer der mit der höchsten Zahl am Ende ist, sollte das mit nachfolgendem Makro funktionieren.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.
Sub auto_open()
Dim strTeilname As String
Dim Pfad As String
Dim objDateien As Object
Dim Obj As Object
Dim objVerzName As Object
Dim iNummer As Integer
Pfad = "X:\Test\"
strTeilname = "aaa"
strTeilname = InputBox("Bitte ID eingeben", "Abfrage")
If strTeilname = "" Then Exit Sub
Set Obj = CreateObject("Scripting.FileSystemObject")
Set objDateien = Obj.getfolder(Pfad)
For Each objVerzName In objDateien.subfolders
If Mid(objVerzName.Name, 1, Len(strTeilname)) = strTeilname Then _
iNummer = iNummer + 1
Next
Workbooks.Open Pfad & strTeilname & "_" & iNummer & "\" & strTeilname & ".xls"
End Sub
Hier wird das Verzeichnis, was in der Zeile "Pfad = "X:\Test\"
" angegeben wird, nach dem Teilverzeichnisnamen, der in der Eingabebox eingetragen wurde, gesucht. Wenn gefunden, wird die Variable "iNummer" um den Wert 1 erhöht. Am Ende wird das Ganze nur zusammengestzt.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.