Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Laufwerksbuchstaben aus WebDAV auslesen

Begonnen von Gockel67, Oktober 26, 2024, 13:28:09

⏪ vorheriges - nächstes ⏩

Gockel67

Moin Gemeinde,

ist es möglich von einem per WebDAV eingebunden Laufwerk den zugewiesenen Laufwerksbuchstaben auszulesen?

Allen ein schönes Wochenende

Debus

Hallo Gockel,

ich habe hier jetzt keine Laufwerke verbunden um das testen zu können, aber vielleicht hilft das so ins unreine geschriebenen schon um weiter zu kommen.



Public Sub FindWebDAVDrives()
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    Dim drv As Object
    For Each drv In fso.Drives
        If drv.DriveType = 4 Then ' 4 steht für Netzwerklaufwerke
            If IsWebDAVDrive(drv.ShareName) Then
                Debug.Print "WebDAV-Laufwerk gefunden:"
                Debug.Print "  Laufwerksbuchstabe: " & drv.DriveLetter
                Debug.Print "  Freigabename: " & drv.ShareName
                Debug.Print "  Verfügbarer Speicherplatz: " & drv.AvailableSpace & " Bytes"
                Debug.Print "-----------------------------"
            End If
        End If
    Next drv
End Sub

Private Function IsWebDAVDrive(shareName As String) As Boolean
    IsWebDAVDrive = (InStr(1, shareName, "http://", vbTextCompare) > 0) Or _
                    (InStr(1, shareName, "https://", vbTextCompare) > 0)
End Function


Gruß
Holger

Gockel67

Moin Holger,
wenn du mir jetzt noch verrätst wie ich das Teil aufrufe. Iwie tut sich da bei mir gar nichts.
Schönen Sonntag
Jörg

Debus

Hey, da die Ausgabe im Direktfenster geschieht, gehst Du einfach hin, im vba Fenster und startest die Sub  FindWebDAVDrives.

Vorher aktivierst Du aber noch das Direktfenster. Dann lass es mal im Debugger laufen. Aber wie gesagt ich habe hier am NB nur eingeschränkte Möglichkeiten.

Holger

Gockel67

#4
Morgen Holger,
genau so hab ich es gemacht. Nur tut sich wie gesagt nichts. Had dann mal verscht Debug.Print gegen MsgBox zu tauschen. Auch da passiert nichts.
Bisher geh ich bei der Pfadauswahl in meiner Datensicherung hin un wechsel nach auswahl der Datei den Pfad gegen den Laufwerksbuchstaben per Hand. Wäre halt schön gewesen das zu automatisieren.
Schönen Sonntag

P.S. Was ich bisher herausgefunden habe ist dass IsWebDAVDrive ein False zurückliefert.

Debus

Hey, versuch mal mit Debugger zu erforschen welche drv.DriveType er bei Dir findet einfach mal vor dem Next drv eine MsgBox drv.DriveType aufrufen. Vielleicht kommen wir so weiter.

Holger

Debus

Oder Liste Dir das mal kurz in einer Listbox auf (weiß ja nicht wie viele LW Du so hast:


Sub ListDrives()
    Dim fso As Object
    Dim drv As Object
    Dim lstDrives As ListBox
    Dim driveInfo As String
   
   
    Set lstDrives = Me.lstdrive
   
   
    Set fso = CreateObject("Scripting.FileSystemObject")
   
      For Each drv In fso.Drives
       
        driveInfo = drv.DriveLetter & ": - Typ: " & GetDriveTypeString(drv.driveType)
       
        lstDrives.AddItem driveInfo
    Next drv
   
   
    Set fso = Nothing
End Sub

Function GetDriveTypeString(driveType As Integer) As String
    Select Case driveType
        Case 0: GetDriveTypeString = "0 - Unbekannt"
        Case 1: GetDriveTypeString = "1 - Kein Stammverzeichnis"
        Case 2: GetDriveTypeString = "2 - Wechseldatenträger"
        Case 3: GetDriveTypeString = "3 - Festplatte"
        Case 4: GetDriveTypeString = "4 - Netzlaufwerk"
        Case 5: GetDriveTypeString = "5 - CD-ROM"
        Case 6: GetDriveTypeString = "6 - RAM-Disk"
        Case Else: GetDriveTypeString = "Unbekannter Typ"
    End Select
End Function



Und dann schaue mal ob Dein WebDAV da schonmal dabei ist.

Holger

Gockel67

Danke Holger,
jetzt kommen wir der Sache scheinbar auf die Spur. Ich versuche mal einen Screenshot anzufügen. Da stimmt gar nix. Die WebDAV Laufwerke werden als Festplatte erkannt und die Festplatten als Wechseldatenträger. Das Laufwerk das als Netzlaufwerk erkannt wird gibt es gar nicht. A und W sind die WebDAV Laufwerke.

http://weihnachtsland.bplaced.net/screenshot.jpg

P.S. Zum einfügen bin ich scheinbar zu doof. Deshalb der Link als Text

Debus

Erstmal zum Thema hochlade

Gehe auf Antwort dann machen das Dreieck nach unten für Attachment auf. Nun ziehe die Datei in Feld und klicke auf hochladen. Sollte eigentlich ganz einfach sein.


Debus

Hast Du da mal einfach eine 3 raus gemacht? Was passiert dann?


If drv.DriveType = 4
Holger

Debus

Wenn das nicht hilft dann vielleicht so


Function GetWebDAVDriveLetter() As String
    Dim fso As Object
    Dim drv As Object
    Dim webDAVPath As String
   
   
    webDAVPath = "https://webdav.example.com/your/path"
   
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    For Each drv In fso.Drives
        If drv.DriveType = 3 Then
                If InStr(1, drv.ShareName, webDAVPath, vbTextCompare) > 0 Then
                GetWebDAVDriveLetter = drv.DriveLetter
                Exit Function
            End If
        End If
    Next drv
   
   
    GetWebDAVDriveLetter = ""
   
    Set fso = Nothing
End Function




Aufrufen so:



Sub TestWebDAVDrive()
    Dim driveLetter As String
    driveLetter = GetWebDAVDriveLetter()
   
    If driveLetter <> "" Then
        Debug.Print "WebDAV-Laufwerk gefunden: " & driveLetter & ":"
    Else
        Debug.Print "Kein passendes WebDAV-Laufwerk gefunden."
    End If
End Sub


Debug.Print kannst Du natürlich auch durch MSGBOX ersetzen.

Holger

Gockel67

Danke für die Infor zum einfügen. Ich bin immer nur über die Schnellantwort gegangen. Da gibt es das nicht. Rest schau ich mir gleich an.

Gockel67

Geändert in: drv.driveType = 3
IsWebDAVDrive liefert immer noch False zurück.
TestWebDAVDrive liefert Kein passendes WebDAV-Laufwerk gefunden.

Ich raffs nicht  ;D

Debus

Das hier

webDAVPath = "https://webdav.example.com/your/path"
hattest Du aber angepasst?

Holger

Gockel67

Öhm, ne. Hat mir keiner gesagt  ;D
Aber auch jetzt nach Anpassung klappt es immer noch nicht.
Ich dachte das wäre ein Universalteil das grundsätzlich alles ausliest was mit http bzw. https beginnt ausliest. Weil ich das für mehrere Datenbanken einsetzen wollte die alle ein unterschiedliches Laufwerk verwenden.
Trotzdem schonmal danke für deine bisherige Mühe.