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に使用する前に、便利な make を見つけました....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 に答える