Supportnet Computer
Planet of Tech

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

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.

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: