Dropbox


Es kann sinnvoll sein, Bilder oder andere Dateien in den lokalen Dropbox-Ordner zu kopieren. Die folgende Funktion ermittelt den Pfad zum lokalen Dropbox-Ordner.
Function DropBoxPfad
    ' ermittelt den lokalen Pfad des DropBox-Ordners
    ' wird keine Dropbox-Installation gefunden, wird ein leerer String zurück gegeben
    ' kgsoft 160802
    Dim WshShell
    Dim fso
    Const ForReading = 1, ForWriting = 2
    Dim AppDataPfad
    Dim aktOrdner
    Dim DropInfo
    Dim f
    Dim DropInfoText
    ' Systemordner Appdata ermitteln
    Set WshShell = CreateObject ("WScript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    AppDataPfad = WshShell.Environment("Process")("APPDATA")
    aktOrdner = Right(AppDataPfad, Len (AppDataPfad) - InStrRev(AppDataPfad, "\",-1, 1))
    if aktOrdner <> "AppData" Then            ' aktueller Ordner ist Roaming oder Local oder LocalLow
        AppDataPfad = Left(AppDataPfad, InStrRev(AppDataPfad, "\",-1, 1))     ' AppDataPfad auf \appdata\ setzen
    End If
    ' Standort info.json ermitteln
    If fso.FileExists(AppDataPfad & "Roaming\Dropbox\info.json") Then
        DropInfo = AppDataPfad & "Roaming\Dropbox\info.json"
    end If
    If fso.FileExists(AppDataPfad & "Local\Dropbox\info.json") Then
        DropInfo = AppDataPfad & "Local\Dropbox\info.json"
    end If
    If fso.FileExists(AppDataPfad & "LocalLow\Dropbox\info.json") Then
        DropInfo = AppDataPfad & "LocalLow\Dropbox\info.json"
    end If
    if DropInfo <> "" Then
        ' Ermittlung Dropbox-Pfad aus der info.json
        ' Annahme: Pfad steht nach dem String "path" zwischen dem folgenden beiden Anführungszeichen
        Set f = fso.OpenTextFile(DropInfo, ForReading)
        DropInfoText =   f.ReadAll
        ' schrittweises Vorgehen, um evtl. individuelle Abweichungen abzufangen
        DropInfoText = Right(DropInfoText, Len (DropInfoText) - InStr(1, DropInfoText, "path", 1)-4)    'linken Teil bis path" abschneiden
        DropInfoText = Right(DropInfoText, Len (DropInfoText) - InStr(1,DropInfoText, Chr(34), 1))    'linken Teil bis nächstes " abschneiden
        DropBoxPfad = Left(DropInfoText, InStr(1,DropInfoText, Chr(34), 1)-1)       'linken Teil bis nächstes " retten
        DropBoxPfad = Replace (DropBoxPfad, "\\", "\")                                ' doppelte \\ durch einfache \ ersetzen
        set fso = nothing
        set WshShell = nothing
    Else                                                        ' keine Dropbox gefunden
        set fso = nothing
        set WshShell = nothing
        DropBoxPfad = ""
    End If
End Function