2013-10-25 98 views
0

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

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 

回答

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 

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

0

一旦复制工作表到新工作簿,激活并运行此:

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

所以基本上,删除复制已取得后的公式。

+0

和重点是什么???所有数据将被删除! –

+0

@LS_Dev:在我的计算机上,只有包含公式的单元格被清除.....包含数据的单元格不会被清除....您能否确认这一点? –

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复制格式,列宽,前...

相关问题