【发布时间】:2014-06-26 18:51:59
【问题描述】:
我正在运行 Windows 7 x64 和 Office 2010 x64。我在将文件保存为 .xlsx 时遇到了 VBA 代码问题。如果我将其另存为 .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
我正在从启用宏的工作簿中复制此内容(如果有帮助的话)。
这里有代码的基础知识:
Use VBA Macro to Save each Excel Worksheet as Separate Workbook
但除非我将文件保存在旧的 excel 版本中,否则我无法让它运行并出现错误。 尽我所能,所以任何帮助都将不胜感激。
【问题讨论】:
-
我认为您的工作表模块包含代码并且它会出错,因为代码不会保存为无宏工作簿
-
在复制工作表之前尝试保存。工作表的模块中有代码吗?
-
@Siphor 打败了我 ;)
-
我正在使用基于绑定到工作表的私有子自动运行宏。当我检查我正在复制的特定选项卡时,它没有任何代码与该工作表模块相关联。我是否需要从所有工作表中删除所有代码才能正常工作?
-
不,您不必这样做。我发布了一些可以在我的系统上运行的东西。请在最后尝试一下。