Back to Blog

Excelワークブックからマクロを削除して保存する最適な方法について説明します

Posted by Lavani

基本的な保存方法

最も簡単な方法は、ファイル形式を変更して保存することです:

  • .xlsx 形式で保存することで、自動的にVBAコードが除外されます
  • 保存後にファイルを閉じて再度開く必要があります

高度な保存テクニック

値のみの保存方法

  1. すべてのシートの内容を値として保存:
' Subroutine: SaveWithoutCode
' Purpose: Save the workbook without macros by converting it to .xlsx format
Sub SaveWithoutCode()
    Dim ws As Worksheet
    Dim newFilePath As String
    Dim originalCalculation As XlCalculation
    Dim originalScreenUpdating As Boolean
    Dim originalDisplayAlerts As Boolean
    
    ' 現在のExcel設定を保存
    originalCalculation = Application.Calculation
    originalScreenUpdating = Application.ScreenUpdating
    originalDisplayAlerts = Application.DisplayAlerts
    
    ' 設定を変更して処理速度を向上
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    On Error GoTo ErrorHandler
    
    ' 各シートのUsedRangeを値として貼り付け
    For Each ws In ThisWorkbook.Worksheets
        With ws.UsedRange
            .Value = .Value
        End With
    Next ws
    
    ' 新しいファイル名とパスを設定
    newFilePath = ThisWorkbook.Path & "\" & "NewFile.xlsx"
    
    ' マクロなしの形式で保存
    ThisWorkbook.SaveAs Filename:=newFilePath, _
        FileFormat:=xlOpenXMLWorkbook, _
        CreateBackup:=False
    
    MsgBox "マクロを削除した新しいファイルを保存しました: " & newFilePath, vbInformation
    GoTo Cleanup

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbExclamation

Cleanup:
    ' 元のExcel設定を復元
    Application.Calculation = originalCalculation
    Application.ScreenUpdating = originalScreenUpdating
    Application.DisplayAlerts = originalDisplayAlerts
End Sub

CSVフォーマットでの保存

CSVフォーマットで保存すると、以下の効果があります:

  • すべての数式が自動的に値に変換されます
  • すべてのVBAコードが削除されます
  • すべての書式設定が削除されます

注意点

  • 重要なファイルは必ずバックアップを作成してから作業を行ってください
  • 元のマクロを保持したい場合は、コピーを作成してから変換作業を行うことをお勧めします
  • リンクされたデータがある場合は、データタブからリンクを解除する必要があります