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

Forumthread: Netzwerkpfad auslesen

Netzwerkpfad auslesen
13.04.2006 14:24:56
Volker
Hallo an die Experten,
gibt es eine Möglichkeit per Excel-VBA die Netzwerkadresse eines Verzeichnisses auszulesen?
Konkret: Eine Arbeitsmappe liegt auf dem Netzwerklaufwerk, von dem es zur Laufzeit des Programmes auch Daten zur Verarbeitung bezieht.
Ds Problem: die Adresse (z.B. K:\Verz1\Verz2) ist je nach User nicht richtig, da unterschiedliche User unterschiedliche Laufwerksbuchstaben haben.
Auf der Startseite der Arbeitsmappe biete ich dem User mit einem hier im Forum gefundenen Code die Verzeichnisauswahl an, die aber das Verzeichnis in der Form K:\Verz1\Verz2 zurückliefert.
Was muß ich anstellen, um das gewählte Verzeichnis in der Form \\Server1\Verz1\Verz2 zu erhalten?
Im Archiv habe ich zu den Begriffen Netzwerkadresse, Netzwerkname nur Infos gefunden, die meine Frage nicht beantworteten.
Weiß jemand Rat?
Gruß
Volker
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Netzwerkpfad auslesen
13.04.2006 14:31:44
Borschtel
Hi,
mit "ThisWorkbook.Path" bekommst du alles auf einmal, also Server und die Verzeichnisse
Gruß Basti
AW: Netzwerkpfad auslesen
13.04.2006 14:54:32
Matthias
Hallo nochmal,
gleich für Excel angepasst:



Option Explicit
Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" ( _
ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, _
cbRemoteName As Long) As Long
Function GetUNCPath(ByVal sLocalPath As String) As String
'// Methode:   | Konvertiert einen Pfad in UNC-Pfad (\\SERVER\...)
'// Parameter: | sLocalPath = gültiger, lokaler Pfad (X:\..)
'// Rückgabe:  | bei Erfolg = UNC-Pfad
'//            | bei Fehler = sLocalPath
Const NO_ERROR  As Long = 0
Dim sUNCPath    As String
Dim sResult     As String
Dim sDrive      As String
GetUNCPath = sLocalPath
If Mid(sLocalPath, 2, 1) <> ":" Then Exit Function
'// Die API-Funktion benötigt nur das Laufwerk!
sDrive = Left(sLocalPath, 2)
sUNCPath = String(260, 0)
If WNetGetConnection(sDrive, _
sUNCPath, _
Len(sUNCPath)) = NO_ERROR Then
sResult = _
Left(sUNCPath, InStr(sUNCPath, vbNullChar) - 1)
If Len(sResult) > 0 Then
GetUNCPath = sResult & Mid(sLocalPath, 3)
End If
End If
End Function



Gruß Matthias
Anzeige
AW: Netzwerkpfad auslesen
14.04.2006 12:49:39
Volker
Hallo Matthias,
danke für Deine Anpassung.
Lokal funktioniert sie bei mir. Momentan habe ich keinen Netzwerkserver im Zugriff, werde ich direkt nach Ostern ausprobieren und mich melden.
@Borschtel:
Thisworkbook.path ist mir bekannt, aber nich verwendbar, da nur bei gespeicherten Dateien einsetzbar. Aber danke für den Hinweis.
Schöne Ostern
wünscht Volker
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Netzwerkpfad auslesen in Excel


Schritt-für-Schritt-Anleitung

Um den Netzwerkpfad eines Verzeichnisses in Excel auszulesen, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und gehe zu Entwicklertools > Visual Basic (oder drücke ALT + F11).
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit
Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" ( _
ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, _
cbRemoteName As Long) As Long

Function GetUNCPath(ByVal sLocalPath As String) As String
    Const NO_ERROR  As Long = 0
    Dim sUNCPath    As String
    Dim sResult     As String
    Dim sDrive      As String
    GetUNCPath = sLocalPath
    If Mid(sLocalPath, 2, 1) <> ":" Then Exit Function
    sDrive = Left(sLocalPath, 2)
    sUNCPath = String(260, 0)
    If WNetGetConnection(sDrive, sUNCPath, Len(sUNCPath)) = NO_ERROR Then
        sResult = Left(sUNCPath, InStr(sUNCPath, vbNullChar) - 1)
        If Len(sResult) > 0 Then
            GetUNCPath = sResult & Mid(sLocalPath, 3)
        End If
    End If
End Function
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Du kannst jetzt die Funktion GetUNCPath in einer Zelle verwenden, um den UNC-Pfad eines Netzlaufwerks herauszufinden. Zum Beispiel:
    =GetUNCPath("K:\Verz1\Verz2")

Häufige Fehler und Lösungen

  • Fehler 1: Funktion gibt den lokalen Pfad zurück

    • Lösung: Überprüfe, ob der übergebene Pfad korrekt ist und ob das Laufwerk verbunden ist. Stelle sicher, dass Du den Pfad im richtigen Format eingibst.
  • Fehler 2: VBA-Code wird nicht ausgeführt

    • Lösung: Stelle sicher, dass Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter und aktiviere die Makros.

Alternative Methoden

  1. Verwendung von Excel-Funktionen: Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch auf externe Tools zurückgreifen, um den Netzwerkpfad anzuzeigen. Es gibt Programme, die die Netzwerkstruktur auslesen können.

  2. Power Query: In Excel 2016 und später kannst Du Power Query verwenden, um Daten aus einem Netzwerkstandort zu importieren, wobei der UNC-Pfad direkt angezeigt wird.


Praktische Beispiele

  • Beispiel: Um den UNC-Pfad für ein Netzlaufwerk zu ermitteln, das als L: gemappt ist, benutze die Funktion:

    =GetUNCPath("L:\Daten\Projekte")
  • Um mehrere Netzwerkpfade zu überprüfen, erstelle eine Liste in Excel und wende die Funktion auf die gesamte Liste an.


Tipps für Profis

  • Debugging: Wenn Du mit VBA arbeitest, nutze die Debug.Print-Anweisung in Deinem Code, um Werte in der unmittelbaren Fensteransicht anzuzeigen. So kannst Du Fehler schneller identifizieren.

  • Funktion erweitern: Du kannst die Funktion GetUNCPath erweitern, um auch Informationen über die Netzwerkverbindung zurückzugeben, z.B. ob das Laufwerk verbunden ist oder nicht.


FAQ: Häufige Fragen

1. Was ist ein UNC-Pfad?
Ein UNC-Pfad ist ein einheitlicher Netzwerkpfad, der es ermöglicht, auf Dateien und Verzeichnisse auf einem Server über das Netzwerk zuzugreifen, unabhängig von den Laufwerksbuchstaben, die auf lokalen Rechnern verwendet werden.

2. Kann ich den Netzwerkpfad auch ohne VBA ermitteln?
Ja, Du kannst Tools von Drittanbietern oder Power Query verwenden, um Netzwerkpfade auszulesen und anzuzeigen.

3. Wie gebe ich den Netzwerkpfad richtig ein?
Stelle sicher, dass Du den Pfad im Format \\Server\Freigabe\Verzeichnis eingibst, um sicherzustellen, dass Excel die Adresse korrekt interpretiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige