Mit z. B. ThisWorkbook.Fullname wird der OneDrive-Pfad (https://d.docs.live.net/�) zurückgegeben. Wie kann der in den lokalen Pfad umgewandelt werden?
Die folgende Funktion speichert mit Environ() den lokalen OneDrive-Ordner in eine Variable. Anschlie�end ersetzt sie im Pfad der Datei diverse mögliche Zeichenfolgen, die OneDrive selbst vergibt. Mit einem regulären Ausdruck wird dann der OneDrive-Teil im Pfad der Datei durch den lokalen Pfad ersetzt.
Ggf. können noch ein paar Fehlerbehandlungen eingebaut werden.
Function OneDrive2Lokal(ByVal strPfad As String) As String Dim strOnedrivePfad As String, RegEx As Object, regMatches OneDrive2Lokal = "" If RegEx Is Nothing Then Set RegEx = CreateObject("VBScript.RegExp") If Left(strPfad, 6) = "https:" Then strOnedrivePfad = Environ("OneDrive") & "\" ' oder "OneDriveConsumer" strPfad = Replace(strPfad, "^J", ",") strPfad = Replace(strPfad, "^N", "#") strPfad = Replace(strPfad, "^0", "&") RegEx.Pattern = "^(https:/{2}[A-Za-z0-9./]+/)" Set regMatches = RegEx.Execute(strPfad) strPfad = Replace(RegEx.Replace(strPfad, strOnedrivePfad), "/", "\") End If OneDrive2Lokal = strPfad Set RegEx = Nothing End Function
Die Funktion kann beliebig verwendet werden, zum Beispiel:
MsgBox OneDrive2Lokal(ThisWorkbook.FullName)