【问题标题】:Copy a worksheet to a new workbook with paste values and keeping formats将工作表复制到具有粘贴值并保留格式的新工作簿
【发布时间】:2020-06-11 14:29:04
【问题描述】:

我正在尝试将一个工作表复制到一个新工作簿,将所有公式粘贴为值,同时保留所有格式、工作表名称等。新文件名应为“大学”并存储在与原始文件相同的位置。 我一直在为此苦苦挣扎,因为它不断返回一个

“错误 1004:Range 类的 PasteSpecial 方法失败”

使用我当前(复制的)脚本:

Sub new_workbook()

Dim Output As Workbook
Dim FileName As String

Set Output = Workbooks.Add
Application.DisplayAlerts = False

ThisWorkbook.Worksheets("Report").Copy

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

FileName = ThisWorkbook.Path & "\" & "University.xlsx"
Output.SaveAs FileName

End Sub

【问题讨论】:

    标签: vba format copy worksheet


    【解决方案1】:

    Worksheet.Copy 没有指定 BeforeAfter 会创建一个新的工作簿,所以只需解决这个问题。

    更多详情来自docs

    如果您未指定 BeforeAfter,Microsoft Excel 将创建一个包含复制的 Worksheet 对象的新工作簿。新创建的工作簿包含 Application.ActiveWorkbook 属性并包含一个工作表。

    Sub new_workbook()
    
        ThisWorkbook.Worksheets("Report").Copy '<-- creates a new workbook with a copy of your sheet
    
        Dim Output as Workbook
        Set Output = ActiveWorkbook
    
        With Output.Worksheets(1).UsedRange
            .Value = .Value '<-- changes all formulas to values
        End With
    
        Dim FileName As String
        FileName = ThisWorkbook.Path & "\University.xlsx"
    
        Application.DisplayAlerts = False
        Output.SaveAs FileName
    
    End Sub
    

    【讨论】:

    • 太棒了,太快了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多