0

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

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
4

3 回答 3

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在使用复制.Value格式、列宽、...

于 2013-10-25T13:09:58.007 回答
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

如果它给你适合,让我知道,我会做更多的测试。

于 2013-10-25T12:56:36.053 回答
0

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

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

所以基本上,在复制完成删除公式。

于 2013-10-25T12:56:50.363 回答