文件未保存

时间:2014-10-24 19:04:58

标签: excel vba excel-vba

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

我猜这种情况正在发生,因为我在剪贴板上没有任何东西时试图粘贴东西(?)。

这是我想要做的: 1.选择指定的表“测试表” 2.仅将其值(不带公式)粘贴到具有特定名称

的新文件中

这是我得到的输出: 1.将“测试页”中的所有值复制到名为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.仅复制了所需的工作表(仅包含值和没有公式),但未保存(我最初发布的问题)。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

试试这个。这应该有效:

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

答案 2 :(得分:0)

Worksheet.Copy方法不像其他复制/粘贴命令那样工作,它不使用剪贴板。它只是根据选项创建工作表的副本。纸张,而不是纸张的内容。有关详细信息,请参阅its documentation

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

如果要将值复制到新工作表,则应执行以下操作:

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