Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将工作表从一个wb复制到另一个wb,但是否复制值?_Excel_Vba - Fatal编程技术网

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

Excel 将工作表从一个wb复制到另一个wb,但是否复制值?,excel,vba,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

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

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
子发布()
将新的工作分解为工作簿
将旧的\u wb变暗为工作簿
我想我会坚持多久
将新文件路径变暗为字符串
调用刷新\u输出\u工作表
新建文件路径=范围(“输出路径”)。值
设置旧的\u wb=ActiveWorkbook
设置新的\u wb=工作簿。添加
对于旧工作表中的每个sh
如果InStr(LCase(sh.CodeName),“输出”)为0,则
sh.复制后:=新工作表(新工作表计数)
如果结束
下一个sh

没有经过彻底测试,但希望这能让你接近。将复制循环替换为以下内容:

    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
旧工作表中每个sh的

如果InStr(LCase(sh.CodeName),“输出”)为0,则
sh.副本
新建工作表(新建工作表计数)。粘贴特殊粘贴:=XLPasteValue
如果结束
下一个sh

如果它适合您,请告诉我,我将进行更多测试。

将工作表复制到新工作簿后,激活它并运行以下操作:

Sub ClearFormulas()
    On Error Resume Next
    ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas).ClearContents
End Sub
因此,基本上,在复制后删除公式。使用以下方法:

    ...
    sh.Copy After:=new_wb.Sheets(new_wb.Sheets.Count)
    new_wb.Sheets(new_wb.Sheets.Count).Cells.Values=sh.Cells.Values
End If
...
如您所知,第一条语句将复制所有数据

然后,从源中指定新的工作表值,删除所有公式


在使用
.Value
复制格式、列宽等之前,我发现make
.Copy
很有用。LS\u Dev:在我的计算机上,只有包含公式的单元格被清除..包含数据的单元格未被清除..你能确认吗??