モジュールを開放するマクロは作成できないか?

Question 64.3 Previous Next
回覧用ファイルとして、ファイルを軽くする為に計算式の値貼付とマクロの開放を手作業で行っていたのですが、値貼付のマクロを別ファイルに登録しました。しかし、マクロを開放するマクロの組み方がわかりません。
モジュールの開放は『新しいマクロの記録』では記録されず、いろいろ調べてみましたが解らなかったため質問させていただきました。 できるのならば教えてください。できないことならば別の方法を教えてください。
マクロの概要は下記のとおりです。
1. 『集計用ファイル(計算式・マクロ含む)』で数値の集計・計算・グラフ化を行い保存する
2. そのファイルの全てのシートについて、全セル選択→コピー→値貼付を行い、不要なシートまたはセルを削除する
3. モジュールを開放して別名で保存し、回覧用ファイルとする
4. この回覧用Excelファイルをメール添付で送付する
Answer   Copyright (C) 2003.11.25 永井善王
「モジュールを開放するマクロの組み方」という、とても恐ろしいことを知りたいと思ってしまったのですね。
もし、それが可能ならば、他人が作成したマクロをこっそり削除するウィルスのようなものでも作れてしまいます。

「別の方法」を考えてみましょう。
マクロを含むブックを別名で保存すると、当然のことながら、モジュールシートが付いた状態で保存されます。
しかし、右図のようにシートの[移動またはコピー]で[新しいブック]に[コピーを作成する]して、その新しいブックに[名前を付けて保存]すれば モジュールシートは付きませんから、それに対して加工すれば解決するかと思います。
下記が、その部分のコードの例です。
    Message = "フォルダーの日付を指定して下さい。(yymmdd)" 'メッセージを設定
    Title = "フォルダー日付"                    'タイトルを設定
    ファイル名 = InputBox(Message, Title)       'ファイル名入力
    フォルダー名 = Right(ファイル名, 4)         'フォルダー名として編集
-----(ここで指定された集計用ファイルを開く)-----
-----(ここで 2.の処理を行う)-----
    Sheets(Array("AAA", "BBB", "CCC")).Copy     '作業グループのシートをコピー
    Application.DisplayAlerts = False           'エラーメッセージ非表示
    ActiveWorkbook.SaveAs Filename:= _
        "C:\" & フォルダー名 & "\" & ファイル名 & "(回覧用).xls" '名前を付けて保存

なお、集計用ファイルにはグラフシートが含まれているようです。グラフのデータ範囲を修正する必要が出た場合、「
グラフを図としてコピーし他のブックへ貼り付ける」を参考にして考えてみてください。

 

Excel VBA Macro