如何将选定的工作表保存为xlxs

我正在运行Windows 7 x64和Office 2010 x64。 我遇到了VBA代码将文件另存为.xlsx的问题。 如果我把它保存为.xls,一切都很好,但是我需要将它保存为.xlsx。 这是我的代码:

Sub Save_Alignment() With Application .ScreenUpdating = False .EnableEvents = False .DisplayAlerts = False End With Dim Fpath As String Dim Fname As String Dim FileExtStr As String Dim FileFormatNum As Long FileExtStr = ".xls" FileFormatNum = 56 Fpath = "C:\Users\Me\Documents\" Fname = "Document " & Format(Date, "yyyy-mm-dd") & FileExtStr Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets 'SetVersions If ws.Name = "CFGBranchAlignment" Then Dim wb As Workbook Set wb = ws.Application.Workbooks.Add ws.Copy Before:=wb.Sheets(1) wb.SaveAs Fpath & Fname, FileFormat:=FileFormatNum Set wb = Nothing End If Next ws Workbooks("Document MASTER.xlsm").Activate Workbooks(Fname).Close SaveChanges:=False With Application .ScreenUpdating = True .EnableEvents = True .DisplayAlerts = True End With End Sub 

这将运行良好,直到我将FileExtStr更改为.xlsx和FileFormatNum为51.然后代码在wb.SaveAs Fpath …行中断。

在Fpath之后,我也尝试了下面这行:

 wb.SaveAs path & Fname, Excel.XlFileFormat.xlOpenXMLWorkbook 

我从一个macros启用工作簿复制这个(如果有帮助)。

这里有代码的基础知识:

使用VBAmacros将每个Excel工作表保存为单独的工作簿

但我不能让它运行错误,除非我保存在旧的Excel版本的文件。 在我的智慧结束,所以任何帮助将不胜感激。

要将文件另存为.xlsx,请将文件扩展名和FileformatNum更改为如下所示

 FileExtStr = ".xlsx" FileFormatNum = 51 

嗨迈克尝试下面的代码…它工作正常也可以肯定,你有2007或2010版本instlled在你的系统或至less“文件转换”如果你工作从2003年的格式,如果你没有2007年或2010年版本代码将会中断。

 Sub Save_Alignment() With Application .ScreenUpdating = False .EnableEvents = False .DisplayAlerts = False End With Dim Fpath As String Dim Fname As String Dim FileExtStr As String Dim FileFormatNum As Long FileExtStr = ".xlsx" FileFormatNum = 51 Fpath = "C:\" Fname = "Document " & Format(Date, "yyyy-mm-dd") & FileExtStr Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets 'SetVersions If ws.Name = "CFGBranchAlignment" Then Dim wb As Workbook Set wb = ws.Application.Workbooks.Add ws.Copy Before:=wb.Sheets(1) wb.SaveAs Fpath & Fname, FileFormat:=FileFormatNum Set wb = Nothing End If Next ws Workbooks("Document MASTER.xlsm").Activate Workbooks(Fname).Close SaveChanges:=False With Application .ScreenUpdating = True .EnableEvents = True .DisplayAlerts = True End With End Sub 

尝试这个。 在For Each子句中做了一点修改:

 Sub test() Dim Fname As String, Fpath As String, FileExtStr As String FileExtStr = ".xls" Fpath = CreateObject("WScript.Shell").specialfolders("MyDocuments") & "\" Fname = "Document " & Format(Date, "yyyy-mm-dd") & FileExtStr Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name = "CFGBranchAlignment" Then Dim wb As Workbook ws.Copy Set wb = ActiveWorkbook wb.SaveAs Fpath & Fname, xlOpenXMLWorkbook Set wb = Nothing End If Next ws End Sub 

HTH。 顺便说一句,坚持与你的对象直接工作。
检查这一点 ,看看如何避免select和活动[对象]的方法。