将工作表从一个wb复制到另一个wb,但复制值?

时间:2013-10-25 12:46:35

标签: excel vba

我将以下代码从一个工作簿添加到另一个工作簿。但是,我只想添加值而不是公式。我如何实现这一目标?

Sub publish()
    Dim new_wb As Workbook
    Dim old_wb As Workbook
    Dim i As Long
    Dim new_file_path As String

    Call refresh_output_sheets

    new_file_path = Range("output_path").Value
    Set old_wb = ActiveWorkbook
    Set new_wb = Workbooks.Add

    For Each sh In old_wb.Sheets
        If InStr(LCase(sh.CodeName), "output") <> 0 Then
            sh.Copy After:=new_wb.Sheets(new_wb.Sheets.Count)
        End If
    Next sh

3 个答案:

答案 0 :(得分:0)

没有经过彻底的测试,但希望这会让你接近。用以下内容替换你的副本循环:

    For Each sh In old_wb.Sheets
        If InStr(LCase(sh.CodeName), "output") <> 0 Then
            sh.Copy
            new_wb.Sheets(new_wb.Sheets.Count).PasteSpecial Paste:=xlPasteValues
        End If
    Next sh

如果它适合你,请告诉我,我会做更多测试。

答案 1 :(得分:0)

将工作表复制到新工作簿后,将其激活并运行:

Sub ClearFormulas()
    On Error Resume Next
    ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).ClearContents
End Sub

所以基本上,在复制之后删除公式

答案 2 :(得分:0)

使用此:

    ...
    sh.Copy After:=new_wb.Sheets(new_wb.Sheets.Count)
    new_wb.Sheets(new_wb.Sheets.Count).Cells.Values=sh.Cells.Values
End If
...

如您所知,第一个语句将复制所有数据。

然后,从源分配新的工作表值,删除所有公式。

在使用.Copy复制格式,列宽,...之前,我发现有用的make .Value