我收到一条错误消息:“范围类的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.仅复制了所需的工作表(仅包含值和没有公式),但未保存(我最初发布的问题)。
答案 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 ...