アクティブシートの数式を削除して値にするマクロ

Excelのファイルを他人に渡すときに数式を見られたくないケースがあります。
まず、前に照会したPDFで保存する方法があります。
また、数式を値に置き換える方法があります。範囲を選択してコピーし「形式を選択して貼り付け」で「値」を選択すればよいです。
ここでは、数式を削除して値にする方法を自動的に行うマクロを紹介します。
アクティブシート(現在開いているシート)を新規シートまたは新規ブックにコピーし、数式を削除します。

Sub アクティブシートの数式を削除()
    '現在のシートを新規シートまたはブックにコピー(数式、書式が複写)。
    'シート全体をコピーし、値を貼り付け(数式が削除される)。
    prompt = "アクティブシートをコピーし数式を削除します。" _
        & "はい:新規シートにコピー、いいえ:新規ブックにコピー"
    res = MsgBox(prompt, vbYesNoCancel, "コピー先")
    If res = vbYes Then
        '現在のシートの前にコピー。
        ActiveSheet.Copy Before:=ActiveSheet
    ElseIf res = vbNo Then
        '新規ブックにコピー。
        ActiveSheet.Copy
    Else
        Exit Sub
    End If
    Cells.Copy
    Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
    Range("A1").Select
End Sub

「ActiveSheet.Copy」でアクティブシートを複写しますが、パラメータ(Before、After)を指定しない場合、新規ブックに複写されます。

コメント

タイトルとURLをコピーしました