You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Excel VBA中的本地文件路径 实现多电脑通用

VBA通用桌面路径修改方案

你只需要做两处小改动就能实现跨设备通用:

  • 不用手动拼接带%USERNAME%的路径,直接调用Windows Shell接口获取当前用户桌面路径,兼容性更强,不会因为用户桌面路径自定义、系统装在非C盘等问题报错。
  • 新增1行代码获取桌面通用路径,替换原有两处硬编码的文件路径即可,同时可以清理原脚本中冗余的重复打开文件逻辑。

具体实现步骤:

  1. 在If MSG1 = vbYes Then代码块的最上方新增代码获取当前用户的桌面路径:
Dim desktopPath As String
desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
  1. 把原代码中两处硬编码的路径"C:\Users\*User*\Desktop\upload.txt"全部替换为desktopPath & "upload.txt"即可。

修改后的完整代码

Sub Order()
'
' Creates Order form Visual Basic control
' Visual Basic script recorded 8/27/2021 by Me
' Copies order to Supplier
'
    Dim MSG1 As VbMsgBoxResult, MSG2 As VbMsgBoxResult
    Dim desktopPath As String
    
    MSG1 = MsgBox("Do you wish to create a new order?", vbYesNo, "New Order Confirmation")

    If MSG1 = vbYes Then
        ' 获取当前用户桌面通用路径
        desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
    
        'Copies data
        Range("M1:N300").Select
        Selection.Copy
        Range("A3").Select
    
        'Pastes data to text file
        Workbooks.OpenText Filename:=desktopPath & "upload.txt", Origin:= _
            437, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)), _
            TrailingMinusNumbers:=True
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWindow.Close
        Range("A3").Select
    End If

    'Opens web upload dialog
    MSG2 = MsgBox("Do you wish to upload the order to Supplier?", vbYesNo, "Upload Confirmation")

    If MSG2 = vbYes Then
        Const Hyper As String = "*URL of Supplier*"
        ThisWorkbook.FollowHyperlink Address:=Hyper ', NewWindow:=Tru
    End If

End Sub

如果你坚持要使用拼接%USERNAME%的方式实现,也可以用Environ函数获取用户名:

desktopPath = "C:\Users\" & Environ("USERNAME") & "\Desktop\"

该方案仅在用户桌面默认在C盘时可用,兼容性弱于前者。

内容的提问来源于stack exchange,提问作者Jeremy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:48:04