【问题标题】:Excel VBA SaveAS only one sheetExcel VBA SaveAS 只有一张
【发布时间】:2020-05-28 03:49:44
【问题描述】:

我有一个包含多张工作表的 excel,我尝试使用 vba 保存除 4 之外的每张工作表。 问题是,如果我尝试使用 .csv 以外的任何其他格式,它会保存整个 excel,从而将工作表保存为活动的。

这是我正在使用的代码(带有 csv 的代码):

Public Sub SaveWorksheetsAsCsv()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim xDir As String
Dim folder As FileDialog
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
For Each s In Worksheets
    If s.Name <> "Template" And s.Name <> "Interface" And s.Name <> "Accounts" And s.Name <> "Instr" Then
        s.SaveAs xDir & "\" & s.Name, xlCSV
    End If
Next
For Each s In Worksheets
    If s.Name <> "Template" And s.Name <> "Interface" And s.Name <> "Accounts" And s.Name <> "Instr" Then
        s.Delete
    End If
Next s
End Sub

我想将它保存为 xlsm,这样它将保留我在主 excel 中的所有格式。(自动适应列和所有边框)。

我不知道它有什么问题......

【问题讨论】:

  • 是的,我认为Worksheet.SaveAs 有这种行为。一种解决方法是Copy 工作表(创建一个新工作簿),然后保存ActiveWorkbook。请注意,如果您只想保留格式,可以使用xlsx 而不是xlsm
  • CSV 文件只有一张。如果您加载包含多张工作表的内容,由于文件类型的原因,它们以及任何格式都将被删除。 .xl* 文件类型将保存整个工作簿。您可以 Sheets.Move for one sheet.SaveAs 新工作簿,而不用旧工作簿保存任何内容。正如 BigBen 所说,您也可以Sheets.Copy
  • @Cyril Cool,sheets.move 效果很好。

标签: excel vba


【解决方案1】:

感谢@Cyril,我切换到Sheets.Move,现在一切正常。 谢谢。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多