仅保存工作表的表对象的值的副本

时间:2015-11-13 06:29:46

标签: excel vba excel-vba

我找到了一个用于保存Excel工作簿副本的宏。我想将宏改进为:

  • 保存特定于副本的表对象;
  • 仅保存该表的值(不是公式或格式);

当前的VBA脚本是:

Sub Publish()

Application.DisplayAlerts = False

ActiveWorkbook.SaveCopyAs Filename:= "C:\myfolder\mypublisheddata.xlsm"
ActiveWorkbook.Save
Application.DisplayAlerts = True

End Sub

2 个答案:

答案 0 :(得分:1)

请检查文件夹" C:\ myfolder"已存在,因为如果没有,宏将创建它但失败。

要保存为普通文件(.xlsx):

Sub Publish()
    Application.DisplayAlerts = False
    ActiveSheet.ListObjects("Table1").Range.Copy
    Workbooks.Add.Worksheets(1).Range("A1").PasteSpecial xlPasteValues
    ActiveWorkbook.Close True, "C:\myfolder\mypublisheddata.xlsx"
    Application.DisplayAlerts = True
End Sub

也许您不想立即关闭新WB,您可以使用SaveAs而不是Close。

如果你真的需要保存为xlsm宏启用,上面的方法可能会失败,你必须这样做:

Sub Publish()
    Application.DisplayAlerts = False
    ActiveSheet.ListObjects("Table1").Range.Copy
    Workbooks.Add.Worksheets(1).Range("A1").PasteSpecial xlPasteValues
    ActiveWorkbook.SaveAs "C:\myfolder\mypublisheddata.xlsm", xlOpenXMLWorkbookMacroEnabled
    ActiveWorkbook.Close False
    Application.DisplayAlerts = True
End Sub

答案 1 :(得分:0)

在Excel中,有一些"过去特别"例如,其中一个只粘贴值:Selection.PasteSpecial Paste:=xlPasteValues, ...