【问题标题】:Paste Special Method of Range class failed error while trying to save worksheet尝试保存工作表时粘贴 Range 类的特殊方法失败错误
【发布时间】:2019-08-08 15:11:15
【问题描述】:

我正在尝试复制工作表数据并将其保存在新工作表中,而不从原始工作表中复制基础公式(shtAnalysis)。我无法做到这一点,因为我遇到了错误:

粘贴 Range 类的特殊方法失败

在线 wsPaste.UsedRange.PasteSpecial xlPasteValues

Public Sub PrepareFileAttachment()
    Application.CalculateFull
    Dim wrkBook As Workbook, wsPaste As Worksheet
    Dim Path As String
    Set wrkBook = Workbooks.Add
    Set wsPaste = wrkBook.Worksheets(1)
    Path = "C:\RandomPath" & "\" & "Report" & Format(Now, "mmddyyyy")
    shtAnalysis.Copy
    wsPaste.Activate
    wsPaste.UsedRange.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Application.ActiveWorkbook.SaveAs filename:=Path, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    shtControl.Range(GENERATED_FILENAME).Value = Path & ".xlsx"
    ActiveWindow.Close
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    Avoid the ActivateUsed.Range,因此,更改这些行:

    shtAnalysis.Copy
    wsPaste.Activate
    wsPaste.UsedRange.PasteSpecial xlPasteValues
    

    致这些:

    shtAnalysis.Copy
    wsPaste.PasteSpecial xlPasteValues
    

    原始代码试图复制整个工作表shtAnalysis,但只允许将其粘贴到UsedRange,这是VBA 不喜欢的。

    【讨论】:

    • 感谢您的回复。不幸的是,这不起作用。这会将原始内容复制到具有公式的不同文件中,并将文本“wsPaste.UsedRange.PasteSpecial xlPasteValues”粘贴到新工作簿中。
    • @Karam - 你可能做错了什么,因为如果你完全按照提到的那样替换,那么只要代码中不存在 UsedRange 这个词就不能出现在文本上。尝试重新启动您的电脑并重新尝试。
    【解决方案2】:

    请试一试

    Public Sub PrepareFileAttachment()
        Application.CalculateFull
        Dim wrkBook As Workbook, wsPaste As Worksheet
        Dim openedWorkbook As Workbook
        Dim Path As String
        Set openedWorkbook = ThisWorkbook
        Set wrkBook = Workbooks.Add
        Set wsPaste = wrkBook.Worksheets(1)
        Path = "C:\RandomPath" & "\" & "Report" & Format(Now, "mmddyyyy")
        openedWorkbook.Sheets("shtAnalysis").Copy
        wsPaste.Activate
        wsPaste.PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        Application.ActiveWorkbook.SaveAs Filename:=Path, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        shtControl.Range(GENERATED_FILENAME).Value = Path & ".xlsx"
        ActiveWindow.Close
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2019-04-13
      • 2016-06-16
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多