在默认情况下将默认保存更改为位置,而不保存工作簿

时间:2014-10-20 10:59:13

标签: excel excel-vba vba

我有一个工作簿,我正在从另一张纸上创建,以检查是否需要在仪器上进行校准。如果不需要校准,那么校准测试表不需要保存,理想情况下不应该保存。

如果需要校准,我需要将校准页保存到特定文件夹。

我想要的是一个设置saveas位置的脚本,所以如果用户想要保存文件,那么它将在正确的位置打开,允许手动控制保存,可能是10或20分钟后(例如由通常触发)文件>另存为方法)。这意味着我不想在宏中保存。对不起,如果最初没有这个。

我无法找到执行此操作的任何功能,Application.DefaultFilePath = savelocation无法正常工作,因为我正在打开现有模板,因此默认位置始终是现有模板。

我已经在我的工作簿中运行了ChDir,然后转到文件>另存为,它没有任何变化,它仍然打开保存当前(主)文件的文件夹。 Application.GetSaveAsFileName()对我没用,因为我知道它的保存位置以及我要保存的位置,我只是不想在那里导航并冒险存到错误的文件夹。

2 个答案:

答案 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