HERBERS Excel-Forum - das Archiv

Thema: Dateiordner auslesen

Dateiordner auslesen
Thomas
Guten Morgen

Mit ActiveWorkbook.Path kann ich den gesamten Dateiname auslesen.

Gibt es die Möglichkeit nur der Laufwerkbuchstabe mit dem ersten Ordner auszulesen. Alle Unterordner sollen dabei nicht ausgelesen werden.

Gruss
Thomas
AW: Dateiordner auslesen
RPP63
Moin!
Vorweg:
Mit ActiveWorkbook.Path liest Du nicht den kompletten Dateinamen, sondern den Pfad aus.
Egal, eine Möglichkeit:
Sub first_folder()

Dim Pfad
Dim APS$: APS = Application.PathSeparator
Pfad = Split(ActiveWorkbook.Path, APS)
MsgBox Pfad(0) & APS & Pfad(1)
End Sub

Gruß Ralf
AW: Dateiordner auslesen
Thomas
Guten Morgen Ralf,
besten Dank für deine Unterstützung.

Zu deiner Anmerkung: Ja ich habe eigentlich schon Pfad gemeint und nicht Dateiname das wäre ja dann ".Name"

Gruss
Thomas
AW: Dateiordner auslesen
Thomas
Noch ein Frage dazu,

ist diese Schreibeweise für andere Anwendungen korrekt?
MsgBox Pfad(0) & APS & Pfad(1) & APS & Pfad(2)

Wenn ja, so wären damit viele Optionen offen, wie nur Ordnername ohne Laufwerk auslesen, oder Laufwerk mit individuellen Ordnernamen.

Und eine Weitere Frage,
Option bei Serverumgebungen: gibt es da auch eine Variante? Wahrscheinlich wird dieses wohl zu Komplex?

Gruss
Thomas
AW: Dateiordner auslesen
Thomas
Guten Abend Ralf,

ich habe noch eine Frage.

Wieso braucht es für einen \ denn überhaupt eine Applikation? Was macht der ParthSeparator denn besser, weil er generiert ja auch nur den \. Könnte man es denn auch einfach umsetzen mit einem \?

Dim APS$: APS = Application.PathSeparator

Gruss
Thomas
Könnte man es denn auch einfach umsetzen mit einem \?
Uduuh
Hallo,
kannst du machen, wenn du es nur unter Windows einsetzt.

Gruß aus'm Pott
Udo
AW: Dateiordner auslesen
schauan
Hallöchen,
1)
Da sollte es aber auch einen Pfad(2) geben. Probier mal aus, was passiert, wenn nicht...
2)
Wenn Du den Server als Laufwerk angebunden hast, geht es genauso gut...
AW: Dateiordner auslesen
RPP63
Zur Anmerkung von André:
Du musst halt einen Exit einbauen, wenn die max. Ordnertiefe kleiner als die angefragte Ebene ist.
Ich habe das mal flugs in einer UDF umgesetzt:
Function Teil_Pfad$(Ebene&)

'Ebene 0 Laufwerk
'Ebene 1 Hauptordner
'Ebene 2 1. Unterordner, usw.
Dim Pfad, i&
Dim APS$: APS = Application.PathSeparator
Pfad = Split(ActiveWorkbook.Path, APS)
For i = 0 To UBound(Pfad)
Teil_Pfad = Teil_Pfad & Pfad(i) & APS
If i = Ebene Then Exit For
Next
End Function

hier mal als Ausgabe in einer Tabelle:
 A
1I:\aktueller Stand\Spielereien\
2I:\aktueller Stand\
3I:\
4I:\aktueller Stand\Spielereien\

ZelleFormel
A1=Teil_Pfad(2)
A2=Teil_Pfad(1)
A3=Teil_Pfad(0)
A4=Teil_Pfad(3)


Gruß Ralf
AW: Dateiordner auslesen
Thomas
Besten Dank Ralf,
ich bleibe bei deinem ersten Beispiel. Das ist absolut ausreichend, weil "Spielerei" braucht es ja nicht.
Habe mir das ein bisschen überlegt. Die Verzeichnisstruktur ist Statisch. Das einzige was dynamisch sein kann, ist der Laufwerksbuchstabe und das Hauptverzeichnis.
Der Rest wird beim abspeichern eines PDF oder einer sonstigen generierten xlsx Datei innerhalb dieser Verzeichnis Struktur geschehen. Und da wird individuell der richtige Speicherpfad in einem String übergeben und brauche nur voran gesetzt die dynamische Erkennung von Laufwerk und Hauptverzeichnis. Der Pfad im String prüfe ich mit einer IF Verzweigung und sollte er aus irgendwelchen Gründen fehlen oder einfach eines der Verzeichnisse nicht der richtigen Wortwahl entsprechen, da vielleicht mal jemand ein Verzeichnis umbenennt so wird die Datei dann automatisch im Windows Ordner "Dokumente" abgespeichert.

Besten Dank für deine Darstellung, es ist immer wieder Lernreich und interessant mit euch hier.

Gruss
Thomas