Hola Nanu,
füge die folgende Funktion in das Modul
mdlReferenzen ein
Code: Alles auswählen
Function GetOnedriveFolderPath(strPath As String) As String
[b]Wichtig! [/b]Die Arbeitsmappe muss sich im OneDrive Ordner befinden.
Dim strPathLocalOnedriveFolder As String 'ie: C:\Benutzer\....\Onedrive
Dim strWorkbookPath As String 'Variable: the adapted Path replaced "/"
Dim arrPathSubStrings() As String 'The splitted Workbookpath, Split() reutrns an Array
Dim fso As Object 'Object: the standard FileObject with VBScript FileSystemObject (activated with References)
strPathLocalOnedriveFolder = Environ("OneDrive") 'the local Onedrive Paht
arrPathSubStrings = Split(strPath, "/", 5)
strWorkbookPath = Replace(arrPathSubStrings(4), "/", "\")
Set fso = CreateObject("Scripting.FileSystemObject")
GetOnedriveFolderPath = fso.BuildPath(strPathLocalOnedriveFolder, strWorkbookPath)
End Function
Teste es im Direktfenster [STRG]+ [G] mit
das sollte durchlaufen. Bei funktioniert es...
Aufrufen kannst du esin deinem mdlReferenzen.LstRefs mit:
Code: Alles auswählen
Set oTop = oFSO.GetFolder(GetOnedriveFolderPath(wb.path))
Annotation:
jetzt könntest du noch abfangen, ob sich die Datei (also deine Arbeitsmappe) in einem "reinen" lokalen Ordner befindet oder in einem OneDrive Ordner und enstprechent das SetoTop nur mit .... wb.Path oder eben mit GetOneDrifeFolderPath...
Am kürzesten läuft das mit IIf() -> da könntest du dich mit einer - wahrscheinlich für dich - neuen VBA-Funktion auseinandersetzen, in etwa mit
bolIsOnedriveFolder = ....
Iif(bolOnedriveFolder, True, False) -> bei True und False die enstprechenden Anweisungen:
siehe hier:
https://learn.microsoft.com/de-de/offic ... f-function
lg