UNC-Pfad richtig ermitteln und verwenden
Schritt-für-Schritt-Anleitung
Um einen UNC-Pfad zu ermitteln, kannst Du die folgende Schritt-für-Schritt-Anleitung verwenden:
- VBA-Editor öffnen: Drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Ein neues Modul erstellen: Klicke auf
Einfügen > Modul.
- Füge den folgenden Code ein:
Function GETNETWORKPATH(ByVal DriveName As String) As String
Dim objNtWork As Object, objDrives As Object, lngLoop As Long
Set objNtWork = CreateObject("WScript.Network")
Set objDrives = objNtWork.EnumNetworkDrives
For lngLoop = 0 To objDrives.Count - 1 Step 2
If UCase(objDrives.Item(lngLoop)) = UCase(DriveName) Then
GETNETWORKPATH = objDrives.Item(lngLoop + 1)
Exit For
End If
Next
End Function
- Ein weiteres Modul für den Workbook_Open-Ereignis hinzufügen:
Private Sub Workbook_Open()
Const UNCDEFAULT As String = "\\Server\"
If GETNETWORKPATH(Left(ThisWorkbook.FullName, 2)) & "\" <> UNCDEFAULT Then
Application.DisplayAlerts = False
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close False
End If
Application.DisplayAlerts = True
End Sub
- Speichern und testen: Speichere Deine Datei und teste die Funktionalität.
Häufige Fehler und Lösungen
-
Das angegebene Laufwerk bzw. der UNC-Pfad existiert nicht: Stelle sicher, dass der Drive-Letter korrekt ist und dass das Laufwerk verbunden ist. Überprüfe, ob Du den richtigen UNC-Pfad verwendest.
-
Die Funktion gibt keinen korrekten UNC-Pfad zurück: Überprüfe Deine Netzwerkeinstellungen und stelle sicher, dass die Netzlaufwerke korrekt gemapped sind.
-
Code läuft trotz identischem Pfad: Achte darauf, dass die Vergleichsoperatoren korrekt verwendet werden. Eine falsche Schreibweise kann dazu führen, dass der Code nicht wie gewünscht funktioniert.
Alternative Methoden
Falls die obige Methode nicht funktioniert, kannst Du die Scripting.FileSystemObject-Klasse verwenden, um den UNC-Pfad zu ermitteln:
Sub ErmittelnUNC()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetDriveName(ThisWorkbook.Path)
End Sub
Diese Methode zeigt Dir den Laufwerksnamen und kann helfen, den entsprechenden UNC-Pfad herauszufinden.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie Du den UNC-Pfad in verschiedenen Situationen nutzen kannst:
- UNC-Pfad anzeigen:
Sub ZeigeUNCPfad()
MsgBox "Der UNC-Pfad ist: " & GETNETWORKPATH("D:")
End Sub
- Mit einer UNC-Freigabe arbeiten:
Sub MitUNCArbeiten()
Dim uncPfad As String
uncPfad = GETNETWORKPATH("Z:")
If uncPfad <> "" Then
MsgBox "Der UNC-Pfad lautet: " & uncPfad
Else
MsgBox "Kein gültiger UNC-Pfad gefunden."
End If
End Sub
Tipps für Profis
-
Verwende die LCase-Funktion, um sicherzustellen, dass die Pfadvergleiche nicht durch unterschiedliche Schreibweisen gestört werden.
-
Achte darauf, dass Du vor dem Löschen einer Datei immer die richtigen Zugriffsrechte hast.
-
Stelle sicher, dass Du die Microsoft Scripting Runtime-Bibliothek aktiviert hast, um Fehler zu vermeiden.
FAQ: Häufige Fragen
1. Was ist ein UNC-Pfad?
Ein UNC-Pfad (Universal Naming Convention) ist eine Möglichkeit, auf Ressourcen in einem Netzwerk zuzugreifen, ohne einen Laufwerksbuchstaben zu verwenden. Er hat das Format \\Server\Freigabe\Pfad.
2. Wie kann ich den UNC-Pfad ermitteln?
Du kannst den UNC-Pfad ermitteln, indem Du den GETNETWORKPATH-Code verwendest, um den Drive-Letter in einen UNC-Pfad umzuwandeln.
3. Warum funktioniert mein Code nicht?
Überprüfe, ob die Laufwerksbuchstaben korrekt gemapped sind und ob Du die richtigen Berechtigungen hast, um auf den UNC-Pfad zuzugreifen. Achte auch auf die Schreibweise und den Vergleichsoperator.