こんばんわ。
VBA達人の方お助けください。
非常に込み入った計算をしているExcelシートがありまして。
このVBAにはSQLsarverへの接続文がそのまま入っているため、非常に問題があります。
いっそのことVBAでVBAのモジュール事態を解放ができないかと考えています。
どなたか、回答をお願いします。
解放ではなくて、モジュール事態の書き換えでも構いません。
よろしくお願いします。
VBProjectプロパティを使うことでVBAからモジュールを削除することはできます。
まず、全段階としてVBProjectを使うために
Microsoft Visual Basic for Applications Extensibility
を参照設定します。
次に、セキュリティを変更します。
2003ならば、ツール→マクロ→セキュリティから「信頼できる発行元」タブで
2007ならば、Excelのオプション→セキュリティセンター→セキュリティセンターの設定→マクロの設定で
「Visual Basct プロジェクトへのアクセスを信頼する」にチェックを入れます。
準備ができれば次のコードでモジュールを削除できます。
例えば、Module2を削除ならば、
Sub DelModule() Application.VBE.ActiveVBProject.VBComponents.Remove _ Application.VBE.ActiveVBProject.VBComponents("Module2") End Sub
http://support.microsoft.com/kb/410621/ja
また、標準モジュールを全部削除するならVBProjectからモジュールを取得して
削除することが可能です。
ちなみに、メモリがちゃんと開放されるのか疑問だけどこのコードを実行するモジュールも削除されました。
VBEのプロジェクトエクスプローラでモジュールを選択して、
右クッリクで解放で、(エクスポートしない)を選択すれば
良いと思います。
ごめんなさい、それをVBAで行いたいのです。
①Visual Basic Editorのメニュー「ツール」-「参照」設定で、「Microsoft Visual Basic for Applications Extensibility」をチェックします。
②削除したいモジュール名が"Module1"とすると
Application.VBE.ActiveVBProject.VBComponents.Remove _
Application.VBE.ActiveVBProject.VBComponents("Module1")
で削除されます。
ありがとうございます。試してみたいと思います。
VBProjectプロパティを使うことでVBAからモジュールを削除することはできます。
まず、全段階としてVBProjectを使うために
Microsoft Visual Basic for Applications Extensibility
を参照設定します。
次に、セキュリティを変更します。
2003ならば、ツール→マクロ→セキュリティから「信頼できる発行元」タブで
2007ならば、Excelのオプション→セキュリティセンター→セキュリティセンターの設定→マクロの設定で
「Visual Basct プロジェクトへのアクセスを信頼する」にチェックを入れます。
準備ができれば次のコードでモジュールを削除できます。
例えば、Module2を削除ならば、
Sub DelModule() Application.VBE.ActiveVBProject.VBComponents.Remove _ Application.VBE.ActiveVBProject.VBComponents("Module2") End Sub
http://support.microsoft.com/kb/410621/ja
また、標準モジュールを全部削除するならVBProjectからモジュールを取得して
削除することが可能です。
ちなみに、メモリがちゃんと開放されるのか疑問だけどこのコードを実行するモジュールも削除されました。
ありがとうございます。
試してみたいと思います。
元のブックをコピーして、件のモジュールを削除したものを先に用意しておき、ファイルコピーで上書きすればいいかと。
むむ、必要部分だけをコピーすれば良いってことですか?
確かに別ファイルに書き出せば良いだけではありますね。
うまく使えばこっちの方が効率が良いかもしれないので、
今度試してみたいと思います。
ありがとうございます。
試してみたいと思います。