
エクセル初回起動時にデータを読み込んでマクロで動的に表示を作成した後は
マクロをもう使わないので削除したいって時のための方法です。
マクロが残っていると起動時にセキュリティの警告が出たり、
利用者にマクロを見られるという問題を回避したい場合に使えます。
コピーとかでシートを移すとすべて移した段階で
何故かマクロも移るという現象が起こるので一枚シートを残してやる必要があります。
Sub CreateNoMacroBook()
Dim fname As String
Dim ns As Integer
Dim cnt As Integer
'マクロありブックの名前を取得
fname = ActiveWorkbook.Name
'マクロありブックのシート数を取得
cnt = ActiveWorkbook.Worksheets.Count
'すべてのシートをMoveするとエラーになるのでシートを追加
Worksheets.Add After:=Worksheets(Worksheets.Count)
'新規ブック作成時のデフォルトのシート数を保管
ns = Application.SheetsInNewWorkbook
'新規ブック作成時のシート数を変更
Application.SheetsInNewWorkbook = 1
'新規ブック作成
Workbooks.Add
'新規ブック作成時のデフォルトのシート数に戻す
Application.SheetsInNewWorkbook = ns
'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動
For i = 1 To cnt
Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1")
Next i
'表示用に新規ブックの一枚目のシートをアクティブにする
Workbooks(Workbooks.Count).Worksheets(1).Activate
Application.DisplayAlerts = False
'新規ブックのデフォルトシート"Sheet1"を削除する
Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete
'マクロありブックを保存せずに終了
Workbooks(fname).Close SaveChanges:=False
Application.DisplayAlerts = True
End Sub
2010/2007/2003/2002対応 (「できる逆引き」シリーズ)