Excel VBA保存到映射驱动器上的CurDir

Excel VBA保存到映射驱动器上的CurDir,excel,vba,Excel,Vba,我创建了一个宏,需要一些调整,但无法找到一个部分的答案。根据officename的用户输入,它将打开“另存为”对话框,并在文件+当前日期的当前目录中创建一个文件夹。在本地保存时,此功能可以正常工作。将文件移动到映射的驱动器时,“另存为”对话框将打开“我的本地下载”文件夹。我试过几件事,但结果都一样 当我调试并打印路径时,它是正确的。我相信问题在于我如何使用FileSystemObject和ChDir,尽管从我所读到的内容来看,它们的使用方式应该很好。完整的子组件粘贴在下面 Sub SaveAs(

我创建了一个宏,需要一些调整,但无法找到一个部分的答案。根据officename的用户输入,它将打开“另存为”对话框,并在文件+当前日期的当前目录中创建一个文件夹。在本地保存时,此功能可以正常工作。将文件移动到映射的驱动器时,“另存为”对话框将打开“我的本地下载”文件夹。我试过几件事,但结果都一样

当我调试并打印路径时,它是正确的。我相信问题在于我如何使用FileSystemObject和ChDir,尽管从我所读到的内容来看,它们的使用方式应该很好。完整的子组件粘贴在下面

Sub SaveAs()
Dim file_name As Variant
Dim xdir As String
Dim fso
Dim saveDate As String

Set fso = CreateObject("Scripting.FileSystemObject")
saveDate = Date
saveDate = Replace(saveDate, "/", ".")
'Debug.Print "Test" & " "; officeName <-- good
Fname = officename & " " & Date
Fname = Replace(Fname, "/", "-")
Debug.Print Fname <-- good
xdir = ThisWorkbook.Path & "\" & officename
Debug.Print xdir <-- good
If Not fso.FolderExists(xdir) Then
 fso.CreateFolder (xdir)
End If

ChDir (xdir)

' Get the file name.
file_name = Application.GetSaveAsFilename(Fname, _
    FileFilter:="Excel Macro-Enabled Workbook,*.xlsm,All Files,*.*", _
    Title:="Save As File Name")

' See if the user canceled.
If file_name = False Or "False.xls" Then Exit Sub
Sub SaveAs()
Dim文件名作为变量
作为字符串的Dim xdir
模糊fso
将保存日期设置为字符串
设置fso=CreateObject(“Scripting.FileSystemObject”)
保存日期=日期
saveDate=Replace(saveDate,“/”,“)

“Debug.Print”测试“&”;officeName下面更新的代码现在在所有机器上都运行良好!谢谢你的意见

ChDir(xdir)

Sub SaveAs()
Dim文件名作为变量
作为字符串的Dim xdir
模糊fso
将保存日期设置为字符串

如果您试图切换到的文件夹位于其他驱动器上,则将driveLetter设置为字符串ChDir()将不起作用-您需要先调用ChDrive()。就这样!非常感谢。将添加更新的代码供其他人查看。
Sub SaveAs()
Dim file_name As Variant
Dim xdir As String
Dim fso
Dim saveDate As String
Dim driveLetter As String <-- NEW VARIABLE    

Set fso = CreateObject("Scripting.FileSystemObject")
saveDate = Date
saveDate = Replace(saveDate, "/", ".")
'Debug.Print "Test" & " "; officeName <-- good
Fname = officename & " " & Date
Fname = Replace(Fname, "/", "-")
Debug.Print Fname <-- good
xdir = ThisWorkbook.Path & "\" & officename
Debug.Print xdir <-- good
If Not fso.FolderExists(xdir) Then
 fso.CreateFolder (xdir)
End If

////new code
driveLetter = Left(xdir, 1)
ChDrive (driveLetter)
////new code

ChDir (xdir)

' Get the file name.
file_name = Application.GetSaveAsFilename(Fname, _
FileFilter:="Excel Macro-Enabled Workbook,*.xlsm,All Files,*.*", _
Title:="Save As File Name")

' See if the user canceled.
If file_name = False Or "False.xls" Then Exit Sub