Excel的全名属性与OneDrive

如果我想使用打开的工作簿对象在保存后获取Excel文件的全名,但是该文件已经同步到OneDrive,则会得到一个“https”地址,而不是本地的,而其他程序无法解释。
我如何获得像这样的文件的本地文件名?

例:
将文件保存到“C:\ Users \ user \ OneDrive – Company \ Documents”。
OneDrive进行同步。
查询Workbook.FullName现在显示为“https:// …”

我在网上find了一个包含足够信息的线索,把简单的东西放在一起解决这个问题。 我实际上在Ruby中实现了这个解决scheme,但这是VBA版本:

Option Explicit Private Function Local_Workbook_Name(ByRef wb As Workbook) As String Dim Ctr As Long Dim objShell As Object Dim UserProfilePath As String 'Check if it looks like a OneDrive location If InStr(1, wb.FullName, "https://", vbTextCompare) > 0 Then 'Replace forward slashes with back slashes Local_Workbook_Name = Replace(wb.FullName, "/", "\") 'Get environment path using vbscript Set objShell = CreateObject("WScript.Shell") UserProfilePath = objShell.ExpandEnvironmentStrings("%UserProfile%") 'Trim OneDrive designators For Ctr = 1 To 4 Local_Workbook_Name = Mid(Local_Workbook_Name, InStr(Local_Workbook_Name, "\") + 1) Next 'Construct the name Local_Workbook_Name = UserProfilePath & "\OneDrive\" & Local_Workbook_Name Else Local_Workbook_Name = wb.FullName End If End Function Private Sub testy() MsgBox ActiveWorkbook.FullName & vbCrLf & Local_Workbook_Name(ActiveWorkbook) End Sub