Excel VBA如何动态获取Dropbox文件夹名称以生成通用跨设备路径
解决方案
Excel VBA 本身没有内置Environ("dropboxname")这类直接获取Dropbox文件夹名称的环境变量,但可以通过读取Dropbox自动生成的本地配置文件,动态获取对应Dropbox根目录路径,无需硬编码文件夹名称,完美适配不同Dropbox命名的场景。
实现逻辑
Dropbox安装后会在当前用户的系统应用数据目录下生成info.json配置文件,文件内存储了个人版、企业版Dropbox的根目录绝对路径,我们只需要读取解析该文件即可得到准确的Dropbox路径,不需要手动拼接用户目录和Dropbox文件夹名。
完整可复用代码
Function GetDropboxRootPath() As String Dim fso As Object, txtStream As Object Dim jsonText As String Dim configPath As String Dim pathStart As Long, pathEnd As Long ' 定位Dropbox配置文件路径,优先读 roaming 目录下的配置 configPath = Environ("APPDATA") & "\Dropbox\info.json" Set fso = CreateObject("Scripting.FileSystemObject") ' 若roaming目录无配置,尝试读取local目录配置 If Not fso.FileExists(configPath) Then configPath = Environ("LOCALAPPDATA") & "\Dropbox\info.json" If Not fso.FileExists(configPath) Then MsgBox "未检测到Dropbox配置,请确认Dropbox已正确安装并登录" Exit Function End If End If ' 读取配置文件全部内容 Set txtStream = fso.OpenTextFile(configPath, 1) jsonText = txtStream.ReadAll txtStream.Close ' 优先提取企业版Dropbox路径,不存在则提取个人版路径 pathStart = InStr(1, jsonText, """business"": {", vbTextCompare) If pathStart = 0 Then pathStart = InStr(1, jsonText, """personal"": {", vbTextCompare) End If ' 定位路径字段的起止位置 pathStart = InStr(pathStart, jsonText, """path"": """, vbTextCompare) + Len("""path"": """) pathEnd = InStr(pathStart, jsonText, """", vbTextCompare) ' 替换json中的转义反斜杠,返回标准Windows路径 GetDropboxRootPath = Replace(Mid(jsonText, pathStart, pathEnd - pathStart), "\\", "\") End Function
使用示例
后续所有需要拼接Dropbox内文件路径的位置,直接调用上述函数即可,不需要修改任何硬编码的Dropbox文件夹名:
Sub TestPath() ' 示例:获取Dropbox根目录下「项目」文件夹内的「数据汇总.xlsx」完整路径 Dim targetPath As String targetPath = GetDropboxRootPath() & "\项目\数据汇总.xlsx" ' 若需要单独获取Dropbox文件夹名称,可从根路径中提取 Dim dropboxFolderName As String dropboxFolderName = Mid(GetDropboxRootPath(), InStrRev(GetDropboxRootPath(), "\") + 1) End Sub
内容的提问来源于stack exchange,提问作者SeppeN
相关产品推荐
相关产品推荐

