2016-03-04 61 views
0

我一直在试图找到一种方法来设置默认文件位置打开的特定Excel电子表格的默认保存选项,建议的文件名出现在对话框和默认文件类型是启用宏的工作簿(*。xlsm)。Excel VBA保存代码导致多个保存对话框

我已经完成了以下两项研究的解决方案;然而,这两个似乎都给我一个问题,三个保存对话框在另一个之后打开。
具体来说,单击保存按钮时,保存对话框将在正确的位置(“我的文档/ exceltests”)和正确的文件名称(“AAAA”)打开。然后,我单击保存按钮,提示另一个保存对话框打开具有完全相同的属性。单击保存在此对话框后,工作簿被保存在正确的位置。但是,第三个对话框也会在“我的文档”的默认位置打开。

代码示例1个

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ 
Cancel As Boolean) 
With Application.FileDialog(msoFileDialogSaveAs) 


.InitialFileName = "C:\My Documents\exceltests\AAAA" 
.FilterIndex = 2 

If .Show Then 
    ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), _ 
     FileFormat:=xlOpenXMLWorkbookMacroEnabled 
End If 
End With 

End Sub 

代码示例2

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ 
    Cancel As Boolean) 

    End Sub 
    Dim fn 


fn = Application.GetSaveAsFilename(InitialFileName:="C:\My Documents\exceltests\AAAA", _ 
fileFilter:=" Excel Macro Enabled Workbook (*.xlsm), *.xlsm,") 

If fn <> False Then 
ActiveWorkbook.SaveAs Filename:=fn, _ 
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 

End If 

如果任何人有任何线索,为什么发生这种情况和/或它如何被固定,我会非常感激。

回答

0
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

With Application.FileDialog(msoFileDialogSaveAs) 
    Application.EnableEvents = False 
    .InitialFileName = "C:\My Documents\exceltests\AAAA" 
    .FilterIndex = 2 
    If .Show Then 
     ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), _ 
     FileFormat:=xlOpenXMLWorkbookMacroEnabled 
    End If 
    Application.EnableEvents = True 
End With 

Cancel = True 

End Sub 
+0

谢谢!这几乎可行。它似乎已经摆脱了第二个对话框;然而,第三个(显示默认的我的文档)仍然出现。所以现在只有两个对话框。任何想法为什么发生这种情况? – yaz1069