ThisWorkbook.FullName returns a URL after syncing with OneDrive. I want the file path on disk

前端 未结 3 1350
清酒与你
清酒与你 2021-01-13 16:58

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         


        
3条回答
  •  时光取名叫无心
    2021-01-13 17:09

    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
    

提交回复
热议问题