Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: "Absoluten" Pfad ermitteln

"Absoluten" Pfad ermitteln
02.07.2007 10:55:00
Jochen
Hallo zusammen,
habe folgenden Code, der den Pfad einer Datei mit dem Soll-Speicherpfad vergleicht und das Makro nur dann startet, wenn die beiden übereinstimmen. Die Variable "Sollpfad" wird dabei vorher eingelesen:
If ThisWorkbook.Fullname = Sollpfad Then
'mein Code
Else
MsgBox "Datei ist nicht im richtigen Verzeichnis gespeichert"
End If
Mein Problem: .Fullname gibt das Laufwerk von ThisWorkbook nicht absolut aus, d.h. habe ich die Datei auf z.B. dem M-Laufwerk verbunden, ist .Fullname = "M:\Ordnerstruktur". Es sollte aber der absolute Pfad über Serverbezeichnung und Servername ermittelt werden, also z.B. "\\gffm0123\Projektserver\Ordnerstruktur". Nur dadurch kann die Datei durch beliebige User verwendet werden.
Hätte jemand eine Idee, wie der Code angepasst werden müsste?
Vielen Dank und schöne Grüße,
Jochen

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Absoluten" Pfad ermitteln
02.07.2007 10:59:36
Hajo_Zi
Hallo Jochen,
Pfad ist bei mir nur der Pfad ohne Dateiname, falls das bei Dir auch ist solltest Du ThisWorkbook.Path benutzen.

AW: "Absoluten" Pfad ermitteln
02.07.2007 11:36:51
Jochen
Hallo Hajo,
danke für den Tipp. Das schneidet auf jeden Fall schon den Dateinamen ab. Allerdings ist die Pfadangabe noch immer "M:\...". Zur Not müsste ich die beiden ersten Buchstaben abschneiden. Vielleicht noch eine Idee dafür?
Danke und Grüße,
Jochen

Anzeige
AW: "Absoluten" Pfad ermitteln
02.07.2007 11:23:35
Rudi
Hallo,
in ein Modul:

Private Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" (ByVal lpszLocalName _
As String, ByVal lpszRemoteName As String, _
cbRemoteName As Long) As Long



Public Function GetUNCName(ByVal Path As String) As String
Dim UNC As String * 512
If Len(Path) = 1 Then Path = Path & ":"
If Right$(Path, 1)  "\" Then Path = Path & "\"
If WNetGetConnection(Left$(Path, 2), UNC, Len(UNC)) Then
MsgBox "Es trat ein Fehler auf oder Sie haben versucht eine lokal gespeicherte Datei  _
einzubinden!"
Else
GetUNCName = Left$(UNC, InStr(UNC, vbNullChar) - 1) & Mid$(Path, 3)
End If
End Function



Sub tt()
MsgBox GetUNCName("M")
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: "Absoluten" Pfad ermitteln
02.07.2007 11:39:00
Jochen
Servus Rudi,
vielen Dank für den Profi-Code. Da blicke ich nur leider null durch. Gibt's vielleicht noch eine einfachere Möglichkeit?
Danke und Grüße,
Jochen

AW: "Absoluten" Pfad ermitteln
02.07.2007 11:50:19
Matthias
Hallo Jochen,
wichtig ist doch, dass es funktioniert, und nicht, dass du den Code genau verstehst, oder bekommst du es nicht zum Laufen?
Gruß Matthias

Anzeige
AW: "Absoluten" Pfad ermitteln
02.07.2007 16:20:00
Jochen
Hallo Matthias,
hast du natürlich Recht. Aber genau das ist mein Problem: Was muss ich wo hinkopieren? Mit Functions habe ich noch nie gearbeitet...
Gruß,
Jochen

AW: "Absoluten" Pfad ermitteln
02.07.2007 16:26:00
Rudi
Hallo,
hab ich doch geschrieben: In ein Modul.
Sub tt() ist nur zur Demo.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: "Absoluten" Pfad ermitteln
02.07.2007 22:18:10
Jochen
Hallo Rudi,
jetzt hab ich's hinbekommen. Hat ein bisschen gedauert, aber jetzt läuft's. Vielen Dank für die Mühe! (und die Muh ;-)
Grüße,
Jochen
;
Anzeige
Anzeige

Infobox / Tutorial

Absoluten Pfad in Excel ermitteln


Schritt-für-Schritt-Anleitung

Um den absoluten Pfad einer Datei in Excel zu ermitteln, kannst Du folgenden VBA-Code verwenden. Dieser Code ermittelt den UNC-Pfad, was besonders nützlich ist, wenn Du mit Netzwerkordnern arbeitest.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle im Menü „Einfügen“ die Option „Modul“ aus.
  3. Füge den folgenden Code in das Modul ein:
Private Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" (ByVal lpszLocalName _
As String, ByVal lpszRemoteName As String, _
cbRemoteName As Long) As Long

Public Function GetUNCName(ByVal Path As String) As String
    Dim UNC As String * 512
    If Len(Path) = 1 Then Path = Path & ":"
    If Right$(Path, 1) <> "\" Then Path = Path & "\"
    If WNetGetConnection(Left$(Path, 2), UNC, Len(UNC)) Then
        MsgBox "Es trat ein Fehler auf oder Sie haben versucht, eine lokal gespeicherte Datei einzubinden!"
    Else
        GetUNCName = Left$(UNC, InStr(UNC, vbNullChar) - 1) & Mid$(Path, 3)
    End If
End Function
  1. Um den UNC-Pfad zu testen, kannst Du diesen Sub verwenden:
Sub TestUNC()
    MsgBox GetUNCName("M")
End Sub
  1. Schließe den VBA-Editor und führe den Sub TestUNC aus. Du solltest den absoluten Pfad sehen.

Häufige Fehler und Lösungen

  • Problem: Der Pfad wird nicht als UNC-Pfad angezeigt.

    • Lösung: Stelle sicher, dass der Laufwerksbuchstabe, wie "M", korrekt verbunden ist. Überprüfe auch, ob Du die Berechtigungen für den Netzwerkordner hast.
  • Problem: Fehlermeldung beim Ausführen des Codes.

    • Lösung: Überprüfe, ob die DLL-Datei mpr.dll korrekt registriert ist und dass Dein Excel über die nötigen Berechtigungen verfügt.

Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch den absoluten Link manuell ermitteln:

  1. Öffne den Datei-Explorer.
  2. Navigiere zu der Datei und kopiere den Pfad aus der Adressleiste.
  3. Füge den Pfad in Excel ein, um den absoluten Pfad zu verwenden.

Diese Methode ist zwar nicht so dynamisch, funktioniert aber gut für einfache Aufgaben.


Praktische Beispiele

Angenommen, Du hast eine Datei auf dem M-Laufwerk gespeichert. Wenn Du den absoluten Pfad herausfinden möchtest, könnte der VBA-Code wie folgt aussehen:

Sub ShowAbsolutePath()
    Dim absoluterPfad As String
    absoluterPfad = GetUNCName("M:\Ordner\Datei.xlsx")
    MsgBox "Der absolute Pfad ist: " & absoluterPfad
End Sub

Dieser Code gibt den UNC-Pfad zurück, der für andere Benutzer zugänglich ist.


Tipps für Profis

  • Nutze die Funktion GetUNCName in Kombination mit anderen Excel-Funktionen, um dynamisch Pfade zu verwalten, z.B. in Berichten oder beim Speichern von Dateien.
  • Achte darauf, dass Du immer die richtige Serverbezeichnung verwendest, wenn Du mit Netzwerkordnern arbeitest, um Fehler zu vermeiden.
  • Halte Deinen VBA-Code gut dokumentiert, damit Du und andere Benutzer ihn später leicht verstehen können.

FAQ: Häufige Fragen

1. Wie kann ich den absoluten Pfad für eine Datei einfügen?
Um den absoluten Pfad einzufügen, kannst Du die Funktion GetUNCName verwenden und den Pfad in eine Zelle schreiben.

2. Was ist der Unterschied zwischen einem relativen und einem absoluten Pfad?
Ein relativer Pfad beschreibt den Standort einer Datei in Bezug auf den aktuellen Ordner, während ein absoluter Pfad den vollständigen Speicherort angibt, einschließlich aller Serverbezeichnungen und Ordnerstrukturen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige