2013-02-12 171 views
0

由於activewoorkbook.close true我的宏打開saveFileDialog,但默認選擇其保存類型爲「Excel工作簿」。我需要改變爲「Excel 97-2003工作簿」。即使我已經改變了我在Excel保存選項中的默認格式。但它只有當我手動保存文件時纔有效。任何人可以建議我一些線?如何使用vba在excel2010中將保存類型從excel工作簿更改爲excel 97-2003?

子OpenAllWorkbooksnew() 設置destWB = ActiveWorkbook 昏暗DestCell作爲範圍

Dim cwb As Workbook 
    For Each cwb In Workbooks 

     **Call donemovementReport** 
     ActiveWorkbook.Close True 
     ActiveWorkbook.Close False 
    Next cwb 
End Sub 
+0

所有你需要得到這樣的代碼(或任何類似)是使用宏錄製) – 2013-02-12 12:06:25

回答

2

你可以調用SaveAs方法(與DisplayAlerts =假),而不是關閉。首先更改目標目錄,並在SaveAs中指定文件格式。這對你有幫助嗎?

Dim targetDirectory As String 
targetDirectory = "c:\temp\VBA\test\" 
ChDir targetDirectory 

Application.DisplayAlerts = False 
Workbooks(ActiveWorkbook.Name).SaveAs ActiveWorkbook.Name, xlExcel8 
Application.DisplayAlerts = True 

ActiveWorkbook.Close False 
+0

丹尼爾感謝您的解決。但我想出現savefiledialog和上面的代碼直接將文件保存到路徑。 – user1960257 2013-02-13 12:00:19

+1

啊哈,所以如果你想保存對話框出現,那麼只要刪除DisplayAlerts = False。應該顯示保存對話框,文件格式將被預先設置爲Excel 97-2003。 – dee 2013-02-13 12:43:27

+0

不行不行..... – user1960257 2013-02-14 10:18:20

2

那麼我不知道我是否理解。您可以首先顯示文件對話框,在其中獲取文件名及其路徑,然後調用save-as方法。

Sub test2() 

    Dim targetDirectory As String 
    targetDirectory = "c:\temp\VBA\test\" 
    ChDir targetDirectory 

    Dim excelFileName As Variant 
    excelFileName = Application.GetSaveAsFilename(FileFilter:="Excel Files,*.xls,All Files,*.*", Title:="Save As File Name") 
    If excelFileName = False Then Exit Sub 
    If LCase$(Right$(excelFileName, 4)) <> ".xls" Then 
     excelFileName = excelFileName & ".xls" 
    End If 

    Application.DisplayAlerts = False 
    ActiveWorkbook.SaveAs fileName:=excelFileName, FileFormat:=xlExcel8 
    Application.DisplayAlerts = True 

    ActiveWorkbook.Close False 

End Sub 

或者這種方式,您可以只顯示另存爲對話框:

Application.Dialogs(xlDialogSaveAs).Show "c:\temp\VBA\test\test.xls" 
相關問題