VBA Problem - relativer Pfad ohne Laufwerksbuchstaben

ImpCaligula

New member
Themenstarter
Registriert
8 Aug. 2010
Beiträge
2.222
Salve!

Lang ist es her mit VBA. Daher - kann mir vielleicht einer von Euch helfen bei meinem Problem?

OBERORDNER
Ordner 01
...... worddatei.doc
Ordner 02
... Unterordner01
...... vbadatei.doc
...... andere dateien
... Unterordner02
...... weitere dateien

So das Problem ist, dass dieses Ordnerpaket überall auf jedem Laufwerk liegen könnte. Egal ob C: oder D: oder T: etc. Ich muss nun von jeder x-beliebigen vbadatei heraus aif Ordner 01 / worddatei.doc zugreigen können (öffnen!).

Als Beispiel:
Die vbadatei.doc aus dem Ordner 02 / Unterordner 01 /... muss eben auf Ordner 01 / worddatei.doc zugreifen. Dabei kann es sein, dass die aufrufende Datei nur in einem Ordner, oder in mehrere Unterordner sich befindet. Es wird aber immer auf die Ordner 01 / worddatei.doc zugegriffen.

Wie ich relativ im selben Ordnerverzeichnis zugreife per VBA weiß ich - wie komme ich aber nach oben? Egal woher ich aufrufe aus dieser Ordnerstruktur? Kann mir da jemand helfen?

DANKE!
 
War das eben geraten - oder Wissen? ... :D

..\Ordner01\datei.doc

geht leider nicht. Findet er nicht. Ich habe den absoluten Pfad C:\.... eben nur gekürzt in ..\Ordner etc. - also die Pfadangabe nicht verändert, dass jetzt nach der "Verbesserung" ein Fehler entsteht. Ergo ..\Ordner01\datei.doc geht nicht.
 
Und wenn Du den gesamten Verzeichnisbaum ohne Laufwerksbuchstaben angibst?

\Oberordner\Ordner1\datei.doc

Der Haken bei der Arbeit mit relativen Pfaden könnte sein, dass VBA vom seinem VBA-Verzeichnis aus geht und nicht von dem des Dokuments, aus dem es ausgerufen wird.
 
Das war geraten... Ich hab von dem Microsoft Gedöhnse ungefähr so viel Ahnung wie ein Normalanwender :D. Aber mit sh geht das so... mal ..\ probiert?
 
Ich denke es geht von dem Punkt aus, an dem das Programm liegt bzw. erstellt wird.
 
Erledigt :D

Das Problem ist / war. Ich habe eine Datei, worauf viele verschiedene Word (Makro) Dateien zugreifen müssen. Das Problem dabei - die aufrufenden Dateien können in verschiedene Ordner oder Unterordner oder UnterUnter Ordner sein. ich weiß also nicht, wie viel Mal ich "nach oben" muss. Bei der einen Datei reicht 1x nach oben, bei der anderen Datei kann es 2 oder 3 Mal sein, wo ich hoch muss. Und das alles ohne Laufwerksangaben - startend von dem Ordner der aufrufenden Datei.

Ich habe mit ChDir(""..") immer ein verzeichnis hoch, dann durchsuche ich die Ebene - findet sich da der gesuchte Hauptordner nicht, geht es wieder eins hoch. So lange, bis ich im richtigen Hauptordner bin. Dann nehme ich mit CurDir den aktuellen Hauptordner Pfad und bastel mir den kompletten Pfad zusammen. Geprüft wird mit InStr(). Sieht dann so aus:


Code:
'##########################################################
'Datei wird abgespeichert und der aktuelle Pfad ausgelesen
Application.Dialogs(wdDialogFileSaveAs).Show
Dim aPath As String
Dim nPath As String
aPath = CurDir()
 
'##########################################################
'Vorbereiten zum auslesen der Ordnerstruktur
Dim oFSO As Object
Dim oMainFolder As Object
Dim oFolder As Object
Dim strText As String
Dim oSubFolder As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
'##########################################################
'Endlosschleife, welche Ordner und Subordner ausliest
Do
    Set oMainFolder = oFSO.GetFolder(aPath)
    Set oSubFolder = oMainFolder.SubFolders
    For Each oFolder In oSubFolder
       strText = strText & oFolder.Name
       strText = strText & vbCrLf
    Next
        '##################################################
        'Wenn der gesuchte Ordner Pfad gefunden wird - raus!
        If InStr(strText, "Terminplanung") <> 0 Then
            Exit Do
        End If
 
    '######################################################
    'Such String leeren, eine Ordnerebene höher, Such Pfad setzen
    strText = ""
    ChDir ("..")
    aPath = CurDir()
Loop
 
'##########################################################
'Der gesuchte "obere" Pfad ist gefunden und nun den absoluten
'Ordnerpfad zusammen setzen, wo die Datendatei sitzt und nun
'zugegriffen werden kann
nPath = CurDir() & "\01 Terminplanung, ProjSteckbrief, Ansprechpartner\02 ProjSteckbrief\"
MsgBox nPath
 
Set oSubFolder = Nothing
Set oMainFolder = Nothing
Set oFSO = Nothing
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben