文件没有保存

我收到错误消息:“范围类的PasteSpecial方法失败”

我想这是因为我试图在剪贴板(?)上没有任何东西时粘贴一些东西。

这是我想要做的:1.select指定的工作表“Test Sheet”2.将其值(不包括公式)粘贴到具有特定名称的新文件中

下面是我得到的结果:1.“testing表”中的所有值都被复制到名为Book1的新表中(仅包含具有此名称的一张表)。 正是我想要的,没有文件被保存。

注意:1.我用一组不同的代码尝试了文件名方法,它的工作原理是,当独立工作时获取文件名是没有错误的。 2.在一组不同的代码上尝试时,文件保存程序也可以使用。 在我看来,将代码与复制粘贴方法集成是一个问题。

这是我的代码:

Private Sub CommandButton1_Click() Dim x As String Dim y As String Application.ScreenUpdating = False Application.DisplayAlerts = False ActiveWorkbook.Sheets("Test Sheet").Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False x = "filepath" y = Range("B10").Value 'Reference of the cell which contains the value If y = "" Then y = "Kawasaki Job" Z = x + y Z = Z + ".xlsm" 'Format of macro enabled worksheet ActiveWorkbook.SaveAs Filename:=Z, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

任何帮助赞赏。 谢谢。

编辑:

尝试了很多其他的东西之后,我意识到我最终会得到以下两个输出之一:1.根据我使用的特定代码,将所有工作表复制到另一个工作簿(仅包含值和公式),不论是否包含错误消息。 2.只复制所需的工作表(只有值和公式),但没有保存(我最初发布的问题)。

尝试这个。 这应该工作:

 Private Sub CommandButton1_Click() Dim x As String Dim y As String Application.ScreenUpdating = False Application.DisplayAlerts = False ActiveWorkbook.Sheets("Test Sheet").Copy Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False x = ThisWorkbook.Path & Application.PathSeparator y = Range("B10").Value 'Reference of the cell which contains the value If y = "" Then y = "Kawasaki Job" Z = x & y Z = Z & ".xlsm" 'Format of macro enabled worksheet ActiveWorkbook.SaveAs Filename:=Z, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

改行:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False

至:
ActiveWorksheet.UsedRange.Copy
Activeworksheet.Range("A1").PasteSpecial Paste:=xlPasteValues

Worksheet.Copy方法不起作用像其他复制/粘贴命令,它不使用剪贴板。 它只是根据选项创build工作表的副本。 表单,而不是表单的内容。 详细信息请参阅其文档 。

如果要复制工作表,请使用ActiveWorkbook.Sheets("Test Sheet").Copy方法。

如果你想将这些值复制到一个新的表单中,那么你应该这样做:

 Set SourceSh = Sheets("Test Sheet") Set DestSh = Sheets.Add SourceSh.Range("A1:C10").Copy DestSh.Range("A1:C10").PasteSpecial ...