2016-03-04 87 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