Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Netzlaufwerk verbinden

Netzlaufwerk verbinden
09.12.2005 09:02:01
Jens
Hi
Ich habe das Problem, daß ich aus einen Makro eine Datei öffnen muss welche sich auf einen anderen Rechner im Netz befindet.
Dazu muss aber erst dieser Rechner per Rechnername und Passwort angemeldet werden.
Um das zu vereinfachen möchte ich die Anmelde-Geschichte in den Makro einbauen.
Hat jemand dafür ein Beispiel wie der Code dafür aussehen könnte?
Jens
(Excel ganz gut / VBA-Anfänger)
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Netzlaufwerk verbinden
09.12.2005 09:56:02
Ramses
Hallo
Wenn du Username und Passwort hast, kein Problem
Sub Open_File_on_Not_Yet_Shared_Network_Drive()
    '(C) by Ramses
    'Öffnet den GetOpenFile-Dialog direkt auf eine Datei
    'auf einem Netzlaufwerk dessen Server und Freigabe-Name zwar bekannt
    'dessen LW-Bezeichnung jedoch nicht bekannt ist
    'Kommt häufig vor in Firmen oder wenn manuelle
    'Laufwerke gemappt werden, oder USB-Laufwerke
    'verwendet werden, welche die normalen Laufwerksbezeichnungen
    'verändern
    Dim i As Byte, x As Variant
    Dim OrigDrive As String, FreeDrive As String
    Dim defShare As String, defPath As String, defName As String
    Dim openFile As String, defDrive As String
    Dim shUsername As String, shPassword As String, shDomain As String
    OrigDrive = Left(ThisWorkbook.FullName, 1)
    'Backslash beachten !!!
    'Zur Freigabe auf dem jeweiligen Rechner
    defShare = "\\ServerName\Freigabename"
    'Unterstruktur bis zur Datei
    defPath = "\Unterordner\"
    'Dateiname
    defName = "Datei.xls"
    'Username der auf die Netzwerkfreigabe zugreifen darf
    shUsername = "Ramses"
    'Passwort des berechtigten Users
    shPassword = "Ramses"
    'Eventuel Domäne in der der User bekannt ist
    'wenn nicht aus der lokalen Domäne
    shDomain = "Domäne"
    If myFreeDrive = "Null" Then
        'normales öffnen zum Browsen
        'wenn kein Laufwerksname mehr zur Verfügung steht
        MsgBox "Datei kann nicht direkt angezeigt werden." & Chr$(13) & _
            "Die Datei: """ & defName & """ liegt auf: """ & defShare & defPath & """"
        'Alle Laufwerksbezeichnungen sind verwendet
        'Der User muss nun manuell auf die Datei browsen
        openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
    Else
        defDrive = myFreeDrive
        'Erstellen eines temporären Netzlaufwerkes ohne Username und Passwort
        x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare)
        'Erstellen eines temporären Netzlaufwerkes mit Username und Passwort
        'Ohne Domäne
        'x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare & _
            " " & shPassword & " /User:" & shUsername)

        'Mit fremder Domäne
        'x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare & _
            " " & shPassword & " /User:" & shDomain & "\" & shUsername)

        'in das Verzeichnis wechseln
        ChDrive defDrive
        'in den Unterordner wechseln
        ChDir defDrive & ":" & defPath
        'dialog anzeigen
        openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
        'Temporäres Laufwerk wieder löschen
        x = Shell("cmd.exe /C net use " & defDrive & " /Delete")
    End If
    'Die gewählte Datei öffnen
    Workbooks.Open (openFile)
End Sub

Function myFreeDrive() As String
    '(c) ramses
    'Sucht den nächsten freien Laufwerksnamen
    Dim myFSO As Object, myDrv As Object, drvCount, drvStr As String, vName As String, drvTyp As String
    Dim drvmax As Byte, drvNum As Byte
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set drvCount = myFSO.Drives
    For Each myDrv In drvCount
        Select Case myDrv.DriveType
                'DriveType 3 sind netzlaufwerke
                'diese werden normalerweise von Z absteigend
                'gemappt. Relative Fehlerquelle !!!
                'Wenn sich der Admin nicht an die Convention hält :-)
            Case 3: drvmax = 90 - 1
            Case Else:
                'Val(Asc(myDrv.DriveLetter))
                'erstellt einen nummerischen Wert aus dem Buchstaben
                If drvNum = 0 Then
                    drvNum = Val(Asc(myDrv.DriveLetter))
                End If
                If drvNum < Val(Asc(myDrv.DriveLetter)) Then
                    drvNum = Val(Asc(myDrv.DriveLetter))
                End If
        End Select
    Next
    If drvmax <= drvNum Then
        myFreeDrive = "Null"
    Else
        'Wandelt die entsprechende Nummer + 1
        'in einen zulässigen Laufwerksbuchstaben um
        myFreeDrive = Chr(drvNum + 1)
    End If
End Function

Gruss Rainer
Anzeige
AW: Netzlaufwerk verbinden
09.12.2005 10:42:16
Jens
danke für Deine Hilfe
Ich werde das mal testen
Jens
AW: Netzlaufwerk verbinden
09.12.2005 11:07:17
Jens
Sorry
Aber so ganz steige ich da noch nicht durch.
Ich bin ein Freund von kleinen und einfachen Lösungen.
Jens
AW: Netzlaufwerk verbinden
09.12.2005 12:37:47
Ramses
Hallo
Wenn du das automatisieren willst, dass dies relativ sicher und fehlerfrei läuft, so ist das eine kleine und einfache Lösung.
Gruss Rainer
Anzeige
AW: Netzlaufwerk verbinden
09.12.2005 12:49:49
Jens
Ich versuche mich am Wochenende da ein wenig reinzudenken.
danke
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Netzlaufwerk verbinden in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um ein Netzlaufwerk in Excel mithilfe von VBA zu verbinden, kannst du den folgenden Code verwenden. Damit kannst du eine Netzwerkverbindung automatisch herstellen, um Dateien auf einem anderen Rechner im Netzwerk zu öffnen. Hier ist ein einfaches Beispiel, wie du den net use Befehl nutzen kannst:

Sub Open_File_on_Not_Yet_Shared_Network_Drive()
    Dim defShare As String
    Dim shUsername As String
    Dim shPassword As String
    Dim defDrive As String
    Dim openFile As String

    ' Definiere den Netzwerkpfad
    defShare = "\\ServerName\Freigabename"

    ' Benutzername und Passwort
    shUsername = "DeinBenutzername"
    shPassword = "DeinPasswort"

    ' Temporäres Laufwerk erstellen
    defDrive = "Z:" ' Beispiel für ein Laufwerk
    Shell "cmd.exe /C net use " & defDrive & " " & defShare & " " & shPassword & " /User:" & shUsername

    ' Datei öffnen
    openFile = Application.GetOpenFilename("Excel-Dateien (*.xls), *.xls")
    Workbooks.Open (openFile)

    ' Temporäres Laufwerk wieder löschen
    Shell "cmd.exe /C net use " & defDrive & " /Delete"
End Sub

Dieser Code stellt ein temporäres Netzlaufwerk her, öffnet eine Datei und entfernt das Laufwerk anschließend wieder.


Häufige Fehler und Lösungen

  1. Fehler: "Netzwerkpfad nicht gefunden"
    Lösung: Überprüfe, ob der Netzwerkpfad korrekt ist und ob du die notwendigen Berechtigungen hast, um auf die Freigabe zuzugreifen.

  2. Fehler: "Zugriff verweigert"
    Lösung: Stelle sicher, dass der Benutzername und das Passwort korrekt sind. Wenn du ein Netzlaufwerk mit Passwort verwendest, achte darauf, dass die Schreibweise stimmt.

  3. Fehler: "Das Laufwerk ist nicht verfügbar"
    Lösung: Vergewissere dich, dass der Computer, auf dem die Datei gespeichert ist, eingeschaltet und mit dem Netzwerk verbunden ist.


Alternative Methoden

Wenn du Probleme mit dem net use Befehl hast, kannst du auch die Windows-Benutzeroberfläche nutzen, um ein Netzlaufwerk zu verbinden:

  1. Öffne den Windows Explorer.
  2. Klicke auf "Dieser PC".
  3. Wähle "Netzlaufwerk verbinden" aus dem Menü.
  4. Gib den Pfad zur Netzwerkfreigabe ein und klicke auf "Fertigstellen".

Praktische Beispiele

Hier sind einige weitere Beispiele, wie du den net use Befehl in unterschiedlichen Szenarien verwenden kannst:

  • Netzlaufwerk mit Passwort verbinden:

    Shell "cmd.exe /C net use Z: \\ServerName\Freigabename DeinPasswort /User:DeinBenutzername"
  • Netzlaufwerk trennen:

    Shell "cmd.exe /C net use Z: /Delete"
  • Netzlaufwerk freigeben:

    Shell "net share Freigabename=Z:\ /GRANT:Benutzername,FULL"

Diese Beispiele zeigen, wie flexibel du den net use Befehl in verschiedenen Situationen einsetzen kannst.


Tipps für Profis

  • Verwende VBA-Funktionen zur Fehlerbehandlung: Stelle sicher, dass dein Code robust ist, indem du Fehlerbehandlungsroutinen hinzufügst, um unerwartete Probleme abzufangen.
  • Passwort sicher speichern: Lagere Passwörter nicht direkt im Code. Überlege, ob du sie in einer sicheren Quelle speicherst oder den Benutzer zur Eingabe aufforderst.
  • Automatisierung: Nutze VBA, um repetitive Aufgaben zu automatisieren, wie das regelmäßige Verbinden oder Trennen von Netzlaufwerken.

FAQ: Häufige Fragen

1. Wie kann ich ein Netzlaufwerk ohne Passwort verbinden?
Um ein Netzlaufwerk ohne Passwort zu verbinden, kannst du einfach den net use Befehl ohne die Benutzeranmeldeinformationen verwenden.

2. Kann ich mehrere Netzlaufwerke gleichzeitig verbinden?
Ja, du kannst mehrere net use Befehle hintereinander in deinem VBA-Code verwenden, um mehrere Netzlaufwerke gleichzeitig zu verbinden.

3. Wie kann ich das Passwort für ein Netzlaufwerk auslesen?
Das Auslesen eines gespeicherten Netzlaufwerk-Passworts ist nicht direkt möglich, da Windows diese Daten sicher speichert. Du kannst jedoch das Passwort manuell anfordern.

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