ExcelでVBAマクロを使って業務効率化していると、「配布用にマクロを消したい」という場面が必ず出てきませんか?
- 取引先に渡すとき
- 社内セキュリティチェック対策
- ブログや無料配布用ファイル
- 「マクロ入りは禁止」と言われたとき
このページでは、ボタン1発で
■マクロ削除
■ボタン削除
■xlsm → xlsx 変換
をすべて自動で行う方法を、コピペOKのVBAコード付きで解説します。
なぜマクロを消す必要があるのか?
Excelマクロは便利ですが、配布時には以下のようなリスクがあります。
- セキュリティ警告が表示される
- マクロウイルスを疑われる
- 社外・取引先で開けない
そのため、配布時は「マクロなし(xlsx)」が鉄板です。
よくある失敗パターン
❌ マクロを消し忘れて配布
❌ ボタンだけ残っていてクリックするとエラー
❌ 元のxlsmを上書きしてしまう
このページの方法なら、これらをすべて回避できます。
実現できること
このVBAを使うと、次の処理を自動で行います。
- 元のxlsmをコピー
- マクロを完全削除
- ボタン(フォーム/ActiveX/図形)を削除
- xlsx形式で保存
- 元のxlsmはそのまま残る
これで、 納品・配布・公開用として最強構成です。
事前準備
この設定をしないとエラーになります。
ファイル
→ オプション
→ セキュリティセンター
→ セキュリティセンターの設定
→ マクロの設定
→ 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れる
完全削除のVBAコード
Sub ボタン2_Click()
Dim wbSrc As Workbook
Dim wbTmp As Workbook
Dim comp As Object
Dim ws As Worksheet
Dim shp As Shape
Dim savePath As String
Dim baseName As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wbSrc = ThisWorkbook
' 保存先
savePath = wbSrc.Path & "\"
baseName = Replace(wbSrc.Name, ".xlsm", "")
' 一時コピー作成
wbSrc.SaveCopyAs savePath & baseName & "_temp.xlsm"
' コピーを開く
Set wbTmp = Workbooks.Open(savePath & baseName & "_temp.xlsm")
' ===== マクロ削除 =====
For Each comp In wbTmp.VBProject.VBComponents
Select Case comp.Type
Case 1, 2, 3 ' 標準 / クラス / フォーム
wbTmp.VBProject.VBComponents.Remove comp
End Select
Next comp
' ===== ボタン・図形削除 =====
For Each ws In wbTmp.Worksheets
For Each shp In ws.Shapes
shp.Delete
Next shp
Next ws
' ===== xlsx保存 =====
wbTmp.SaveAs _
Filename:=savePath & baseName & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook
' 一時ファイル削除
wbTmp.Close SaveChanges:=False
Kill savePath & baseName & "_temp.xlsm"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "完了!" & vbCrLf & _
"マクロ・ボタン完全削除済みxlsxを作成しました。", vbInformation
End Sub
ボタンへの設定方法
- 開発タブ → 挿入 → フォームコントロール(ボタン)
- 上記マクロを割り当て
- ボタン名例:
- 「配布用xlsx作成」
- 「マクロ削除」
元のファイル。
ボタンとコードが入ってます。
新たなボタンを作成します。
先程のコードを入力します。
ボタンができたら、ボタンをクリックします。
新しくできたファイルを開くと、マクロが消えています。
これで解決しましたね!
よくある質問(FAQ)
Q. 元のxlsmは消えますか?
→A.消えません。コピーを使って処理します。
Q. 図形や説明枠も消えますか?
→A.はい。すべて削除されます。
Q. マクロは復元できますか?
→A.できません。必ずバックアップを取ってください。
まとめ
- マクロ配布トラブルは事前対策が9割です
- ボタン1発で完全無害化できます
- 納品・社外配布に最適です
Excelを使うすべての人におすすめのVBAです。
このページが役に立ったら、ぜひブックマークしてください。

