2013-02-12 32 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" 
相关问题