2013-10-25 129 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複製格式,列寬,前...

相關問題