Excel's fullname property with OneDrive

后端 未结 12 1998
别那么骄傲
别那么骄傲 2020-12-24 10:12

If I want to use the open Workbook object to get the fullname of an Excel file after saving it, but that file has been synchronized to OneDrive, I get a \"https\" address in

12条回答
  •  抹茶落季
    2020-12-24 10:31

    Very helpful, thanks. I had a similar issue, but with a folder name rather than a filename. Consequently I modified it slightly. I made it work for folder names AND filenames (doesn't have to be a workbook). In case it's helpful, code is below:

    Public Function Local_Name(theName As String) As String
        Dim i               As Integer
        Dim objShell        As Object
        Dim UserProfilePath As String
    
        ' Check if it looks like a OneDrive location.
        If InStr(1, theName, "https://", vbTextCompare) > 0 Then
    
            ' Replace forward slashes with back slashes.
            Local_Name = Replace(theName, "/", "\")
    
            'Get environment path using vbscript.
            Set objShell = CreateObject("WScript.Shell")
            UserProfilePath = objShell.ExpandEnvironmentStrings("%UserProfile%")
    
            ' Trim OneDrive designators.
            For i = 1 To 4
                Local_Name = Mid(Local_Name, InStr(Local_Name, "\") + 1)
            Next i
    
            ' Construct the name.
            Local_Name = UserProfilePath & "\OneDrive\" & Local_Name
        Else
            ' (must already be local).
            Local_Name = theName
        End If
    End Function
    

提交回复
热议问题