- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
2021-03-20 更新:我发现即使我将要引用的文件从 OneDrive 复制到不属于 OneDrive 的本地文件夹并引用它,也会发生同样的事情。只有在我也重命名文件之后,我才能引用它,而不会将其路径变成 URL(假设指向我的在线 OneDrive)。这不符合我的需求。我正在尝试找到一种方法来在不同设备上不同位置的不同应用程序之间共享我的 VBA 代码库。如果我不明白这一点,我可能会就此提出一个单独的问题。
原始问题:
当我向存储在 OneDrive 本地副本上的 Excel xlsm 文件添加引用(在 VBA 中,工具-> 引用)时,路径被转换为 url,我无法再加载我的 VBA 项目而不会收到错误消息它找不到文件。如何使引用始终指向我本地同步的 OneDrive 路径?
例如,
最佳答案
当您添加对 XLSM 文件的引用时,VBA 基本上会像使用“打开文件”命令一样打开工作簿。因此,您可以做的是在触发第一个工作簿的 Open 事件时打开第二个工作簿。您可能会发现使用 ThisWorkbook.Path
获取工作簿物理路径的问题。如果它保存在 OneDrive 文件夹中。我有一个辅助函数也可以帮助你。看一看:
Private Sub Workbook_Open()
Workbooks.Open GetWorkbookPath & "\RYTEwayCode (XLSM).xlsm"
End Sub
您还需要
GetWorkbookPath
功能。
Function GetWorkbookPath(Optional wb As Workbook)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Purpose: Returns a workbook's physical path, even when they are saved in
' synced OneDrive Personal, OneDrive Business or Microsoft Teams folders.
' If no value is provided for wb, it's set to ThisWorkbook object instead.
' Author: Ricardo Gerbaudo
' Source: https://github.com/ricardogerbaudo/vba-helpers
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If wb Is Nothing Then Set wb = ThisWorkbook
GetWorkbookPath = wb.Path
If InStr(1, wb.Path, "https://") <> 0 Then
Const HKEY_CURRENT_USER = &H80000001
Dim objRegistryProvider As Object
Dim strRegistryPath As String
Dim arrSubKeys()
Dim strSubKey As Variant
Dim strUrlNamespace As String
Dim strMountPoint As String
Dim strLocalPath As String
Dim strRemainderPath As String
Dim strLibraryType As String
Set objRegistryProvider = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strRegistryPath = "SOFTWARE\SyncEngines\Providers\OneDrive"
objRegistryProvider.EnumKey HKEY_CURRENT_USER, strRegistryPath, arrSubKeys
For Each strSubKey In arrSubKeys
objRegistryProvider.GetStringValue HKEY_CURRENT_USER, strRegistryPath & "\" & strSubKey & "\", "UrlNamespace", strUrlNamespace
If InStr(1, wb.Path, strUrlNamespace) <> 0 Or InStr(1, strUrlNamespace, wb.Path) <> 0 Then
objRegistryProvider.GetStringValue HKEY_CURRENT_USER, strRegistryPath & "\" & strSubKey & "\", "MountPoint", strMountPoint
objRegistryProvider.GetStringValue HKEY_CURRENT_USER, strRegistryPath & "\" & strSubKey & "\", "LibraryType", strLibraryType
If InStr(1, wb.Path, strUrlNamespace) <> 0 Then
strRemainderPath = Replace(wb.Path, strUrlNamespace, vbNullString)
Else
GetWorkbookPath = strMountPoint
Exit Function
End If
'If OneDrive Personal, skips the GUID part of the URL to match with physical path
If InStr(1, strUrlNamespace, "https://d.docs.live.net") <> 0 Then
If InStr(2, strRemainderPath, "/") = 0 Then
strRemainderPath = vbNullString
Else
strRemainderPath = Mid(strRemainderPath, InStr(2, strRemainderPath, "/"))
End If
End If
'If OneDrive Business, adds extra slash at the start of string to match the pattern
strRemainderPath = IIf(InStr(1, strUrlNamespace, "my.sharepoint.com") <> 0, "/", vbNullString) & strRemainderPath
strLocalPath = ""
If (InStr(1, strRemainderPath, "/")) <> 0 Then
strLocalPath = Mid(strRemainderPath, InStr(1, strRemainderPath, "/"))
strLocalPath = Replace(strLocalPath, "/", "\")
End If
strLocalPath = strMountPoint & strLocalPath
GetWorkbookPath = strLocalPath
If Dir(GetWorkbookPath & "\" & wb.Name) <> "" Then Exit Function
End If
Next
End If
End Function
关于excel - 如何让我的 VBA 项目引用 OneDrive 上的 Excel 工作簿以使用本地驱动器路径而不是 OneDrve URL 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66699061/
我需要使用 power automate + Office 脚本从一个 Excel 工作表复制数据并粘贴(仅值)到另一个工作表 我开始使用下面链接中的答案创建流程。 Power Automate: C
我试图删除这个项目文件夹,但即使在我运行 rm -force 之后它仍然拒绝我.它向我展示了这个: is an NTFS junction point. Use the Force parameter
当我使用“知道此链接的任何人都可以查看此项目”选项在 UI 中创建共享链接时,我得到一个类似于 https://onedrive.live.com/redir?resid=XXX!YYYY&authk
(创建超链接后,我将在 OneNote 中使用它链接到我自己的 Onedrive 上的文件,仅供我使用!) 当我在线查看 Word 中的文件时,显示的 URL 是: https://onedrive.
我想在一个 rest API 调用中获取 office365 onedrive 文件夹中包含的所有文件和文件夹,有没有办法做到这一点? 最佳答案 没有特定的 API 调用来检索 Drive 的平面表示
我正在构建一个 Windows 服务,该服务使用以下方法通过 Graph API 连接到 OneDrive for Business: https://graph.microsoft.io/en-us
请允许我解释什么我在做什么以及如何我在做什么。 我在做什么? 我正在尝试使用其 REST API 将文件上传到 Onedrive来源:one drive api documentation 我正在使用
我正在尝试使用 java sdk 将文件上传到 OneDrive 特殊文件夹,但出现以下错误 错误代码:BadRequest 错误消息:使用“microsoft.graph.createUploadS
我正在尝试使用 OneDrive iOS SDK 将 OneDrive 集成到我的应用程序中。我设法做了我想做的大部分事情,但我似乎无法弄清楚如何在 OneDrive 上的文件夹(项目)中上传图像。上
Microsoft Graph 可以提供 List items shared with the signed-in user 。我想将此 REST 功能与 OneDrive file picker f
我正在尝试通过以下 URL 获取 OneDrive 访问 token https://login.live.com/oauth20_token.srf?client_id=YOUR_CLIENT_ID
我是 skydrive 的新生。然后我想在html中使用文件选择器,并从Interactive Live SDK复制演示代码。但运行结果,打开的窗口并没有直接到文件选择器页面,只是直接到我设置的red
如果我想在保存后使用打开的 Workbook 对象获取 Excel 文件的全名,但该文件已同步到 OneDrive,我会得到一个“https”地址,而不是其他程序无法解释的本地地址。 如何获取这样的文
我刚刚开始使用 OneDrive API。我有一个与 Google Drive 和 Dropbox 集成并从这些服务接收推送通知的应用程序,我希望包含 OneDrive 支持。 也许我没有在看 rig
尝试以不那么困惑的方式存储用户设置和默认保存的数据位置。 在 PC1 上, Label1.Caption := TPath.GetDocumentsPath; 向我显示 C:\Users\Mike\D
我想检查用户是否已经登录到 OneDrive,如果没有,则允许他们登录。我首先在 JS/HTML 项目中尝试过此操作。然后使用 C#/XAML 项目。 我查看了 C#/XAML OneDrive 代码
所以我制作了一个 OneDrive uploader ,它使用 Azure,目前它不适用于教育或工作场所帐户。它仅适用于普通的 Microsoft 帐户。如何让我的应用程序与其他类型的 Microso
我是 Azure 开发的新手。所以我尝试从微软文档( https://learn.microsoft.com/en-us/learn/modules/msgraph-access-file-data/
我正在尝试使用以下网址提取根文件夹中的所有文件: https://api.onedrive.com/v1.0/drive/root/children 但这也给了我同一文件夹下的所有文件夹。有没有办法只
我在引用中没有找到在 WP8.1 上使用 OneDrive SDK 创建新 OneDrive 文件夹的方法。我正在寻找一种跨设备和平台备份和同步的方法。 最佳答案 您可以使用 REST 在 OneDr
我是一名优秀的程序员,十分优秀!