I have a workbook on OneDrive. Usually, ThisWorkbook.FullName returns a path on disk:
c:\\Users\\MyName\\OneDrive - MyCompany\\BlaBla\\MyWorkbook 09-21-17.xl
I used Windows a environment variable to solve this problem.
In my example I was using a private OneDrive, but it is fairly simple to change the code to handle OneDrive for Business. The environment variable would then be "OneDriveCommercial" instead of "OneDriveConsumer".
This is my code for converting the OneDrive URL into a local path:
Rem consumer URL to OneDrive root: "https://d.docs.live.net/<64-bit hex value>/"
OneDriveServerURL = "https://d.docs.live.net/"
path = ActiveWorkbook.path
Worksheets("Menu").Range("G6").Value = path
If Left(path, Len(OneDriveServerURL)) = OneDriveServerURL Then
Rem remove from start to first "/" after server URL
path = Mid(path, InStr(Len(OneDriveServerURL) + 1, path, "/"))
Rem replce "/" by "\"
path = Replace(path, "/", Application.PathSeparator)
Rem add OneDrive root folder from environment variable
path = Environ("OneDriveConsumer") + path
End If