我将以下代码从一个工作簿添加到另一个工作簿。但是,我只想添加值而不是公式。我如何实现这一目标?
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 :(得分: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