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

absoluter Laufwerkpfad auslesen

Forumthread: absoluter Laufwerkpfad auslesen

absoluter Laufwerkpfad auslesen
23.03.2007 13:22:34
Ceci
Hallo Forum,
ich lese mit folgender Prozedur die Laufwerksbuchstaben auf meinem Netzwerk aus.
Ich benötige aber nicht die Buchstaben, sondern die absoluten Laufwerksbezeichnungen.
z.B. nicht H.\ sondern \\Hy08\Laufwerksname\.
Kann mir jemand helfen?
mfg Ceci

Sub AllDrives()
Dim strtemp As String, _
strback As String
Dim intakt As Integer
On Error Resume Next
For intakt = 65 To 90
Err = 0
strtemp = Dir(Chr(intakt) & ":\*.*", vbDirectory)
If strtemp  "" And Err = 0 Then
strback = strback & CurDir(intakt) & ": "
'Debug.Print Object.GetAbsolutePathName(strback)
End If
Next intakt
On Error GoTo 0
MsgBox strback
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: absoluter Laufwerkpfad auslesen
23.03.2007 14:26:00
Rudi
Hallo,
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 tttt()
MsgBox GetUNCName("n:")
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
Dankeschön, funktioniert!!
26.03.2007 08:15:00
Ceci
Hallo Rudi,
vielen Dank für dein Makro,
funzt super!!!
mfg ceci
;
Anzeige
Anzeige

Infobox / Tutorial

Absoluten Laufwerkspfad in Excel auslesen


Schritt-für-Schritt-Anleitung

Um den absoluten Laufwerkspfad in Excel zu ermitteln, kannst Du das folgende VBA-Makro verwenden. Dieses Makro liest die Laufwerksbuchstaben aus und wandelt sie in den UNC-Pfad um.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  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
    
    Sub tttt()
       MsgBox GetUNCName("n:")
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Starte das Makro tttt, um den UNC-Pfad des Laufwerks N: anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Es trat ein Fehler auf oder Sie haben versucht eine lokal gespeicherte Datei einzubinden!"

    • Lösung: Überprüfe den angegebenen Laufwerksbuchstaben. Stelle sicher, dass es sich um ein Netzwerk-Laufwerk handelt.
  • Fehler: Makro funktioniert nicht

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

Alternative Methoden

Wenn Du eine andere Möglichkeit suchst, um den UNC-Pfad zu ermitteln, kannst Du auch die getabsolutepathname-Funktion verwenden. Diese Funktion kann in verschiedenen Programmiersprachen wie Python oder PowerShell implementiert werden.

Beispiel in PowerShell:

$networkPath = Get-PSDrive -Name "N" | Select-Object -ExpandProperty Root
Write-Output $networkPath

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den UNC-Pfad ermitteln kannst:

  • Beispiel 1: Um den UNC-Pfad für das Laufwerk H: zu ermitteln, ändere die Zeile in Deinem Makro zu:

    MsgBox GetUNCName("h:")
  • Beispiel 2: Um den UNC-Pfad für ein anderes Laufwerk zu testen, ersetze „n:“ in der tttt-Subroutine mit dem gewünschten Laufwerksbuchstaben.


Tipps für Profis

  • Wenn Du häufig mit UNC-Pfaden arbeitest, erstelle eine Funktion, die den Pfad für mehrere Laufwerke automatisch abruft.
  • Überlege, Deine Makros in einer Excel-Vorlage zu speichern, die Du für zukünftige Projekte wiederverwenden kannst.
  • Nutze die Möglichkeit, den UNC-Pfad in Formeln zu integrieren, um auf Netzwerkressourcen zuzugreifen.

FAQ: Häufige Fragen

1. Wie kann ich den UNC-Pfad für mehrere Laufwerke gleichzeitig abfragen? Du kannst eine Schleife in Deinem VBA-Code verwenden, um alle Laufwerke abzufragen und die Ergebnisse in einer Liste anzuzeigen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass die mpr.dll verfügbar ist.

3. Was ist der Unterschied zwischen Laufwerksbuchstaben und UNC-Pfaden? Laufwerksbuchstaben sind lokal zugeordnet, während UNC-Pfade den vollständigen Netzwerkpfad zu einer Ressource angeben, was eine bessere Zusammenarbeit in Netzwerken ermöglicht.

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