我有一个工作簿,我正在从另一张纸上创建,以检查是否需要在仪器上进行校准。如果不需要校准,那么校准测试表不需要保存,理想情况下不应该保存。
如果需要校准,我需要将校准页保存到特定文件夹。
我想要的是一个设置saveas位置的脚本,所以如果用户想要保存文件,那么它将在正确的位置打开,允许手动控制保存,可能是10或20分钟后(例如由通常触发)文件>另存为方法)。这意味着我不想在宏中保存。对不起,如果最初没有这个。
我无法找到执行此操作的任何功能,Application.DefaultFilePath = savelocation
无法正常工作,因为我正在打开现有模板,因此默认位置始终是现有模板。
我已经在我的工作簿中运行了ChDir,然后转到文件>另存为,它没有任何变化,它仍然打开保存当前(主)文件的文件夹。 Application.GetSaveAsFileName()
对我没用,因为我知道它的保存位置以及我要保存的位置,我只是不想在那里导航并冒险存到错误的文件夹。
答案 0 :(得分:2)
我从您的查询中理解(您的问题标题也是如此)是您不想保存但设置默认路径。仅当用户想要保存时,才应将其保存在该目录中。如果我的理解是正确的,那么你必须使用ChDir()
例如
ChDir "D:\TMP"
更多来自Excel的帮助
ChDir声明
更改当前目录或文件夹。
<强>语法强>
ChDir路径
必需的path参数是一个字符串表达式,用于标识哪个目录或文件夹成为新的默认目录或文件夹。路径可以包括驱动器。如果未指定驱动器,ChDir将更改当前驱动器上的默认目录或文件夹。
<强>说明强>
ChDir语句更改默认目录,但不更改默认驱动器。例如,如果默认驱动器为C,则以下语句将更改驱动器D上的默认目录,但C仍为默认驱动器:
修改强>:
关于保存的手动控制,您可以使用上面评论中提到的Dave与ChDir
联系Application.GetSaveAsFileName
。
来自评论的跟进
这是我尝试过的,但它确实有效。
Sub Sample()
ChDir "C:\Temp"
ret = Application.GetSaveAsFilename( _
fileFilter:="Excel Files (*.xlsx), *.xlsx")
End Sub
即使我这样做
Sub Sample()
ChDir "C:\Temp"
End Sub
然后手动尝试使用File-SaveAs
保存它,它会在我指定的文件夹中打开。
更多关注
在聊天讨论并在teamviewer上讨论后,我们意识到问题是网络路径,所以替代方法是取消SaveAs并在类模块中重新编写我们自己的。
Option Explicit
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ret
ChDrive "O"
ChDir "O:\AQS\03 AQS Customers\Calibration Check\Temp"
If SaveAsUI = True Then
Cancel = True
ret = Application.GetSaveAsFilename(fileFilter:="Excel Files (*.xls*), *.xls*")
'
'~~> Rest of the code to save the file
'
End If
End Sub
答案 1 :(得分:0)
这对我有用:
Sub SaveWorkbookToDifferentDirectoryWithoutChangingFilename()
ChDrive "Y"
ChDir "Y:\Existing File Name"
ActiveWorkbook.SaveAs
End Sub