Excel VBAについて。 VBAでモジュールを削除したい。


こんばんわ。
VBA達人の方お助けください。

非常に込み入った計算をしているExcelシートがありまして。
このVBAにはSQLsarverへの接続文がそのまま入っているため、非常に問題があります。

いっそのことVBAでVBAのモジュール事態を解放ができないかと考えています。
どなたか、回答をお願いします。

解放ではなくて、モジュール事態の書き換えでも構いません。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/09/03 15:32:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:SALINGER No.3

回答回数3454ベストアンサー獲得回数969

ポイント50pt

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からモジュールを取得して

削除することが可能です。


ちなみに、メモリがちゃんと開放されるのか疑問だけどこのコードを実行するモジュールも削除されました。

id:kia_44

ありがとうございます。

試してみたいと思います。

2010/09/03 15:26:50

その他の回答3件)

id:hathi No.1

回答回数216ベストアンサー獲得回数49

ポイント20pt

VBEのプロジェクトエクスプローラでモジュールを選択して、

右クッリクで解放で、(エクスポートしない)を選択すれば

良いと思います。

id:kia_44

ごめんなさい、それをVBAで行いたいのです。

2010/09/02 22:43:27
id:ycyc No.2

回答回数37ベストアンサー獲得回数6

ポイント50pt

①Visual Basic Editorのメニュー「ツール」-「参照」設定で、「Microsoft Visual Basic for Applications Extensibility」をチェックします。

②削除したいモジュール名が"Module1"とすると

Application.VBE.ActiveVBProject.VBComponents.Remove _

Application.VBE.ActiveVBProject.VBComponents("Module1")

で削除されます。

id:kia_44

ありがとうございます。試してみたいと思います。

2010/09/03 15:26:34
id:SALINGER No.3

回答回数3454ベストアンサー獲得回数969ここでベストアンサー

ポイント50pt

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からモジュールを取得して

削除することが可能です。


ちなみに、メモリがちゃんと開放されるのか疑問だけどこのコードを実行するモジュールも削除されました。

id:kia_44

ありがとうございます。

試してみたいと思います。

2010/09/03 15:26:50
id:frkw2004 No.4

回答回数194ベストアンサー獲得回数21

ポイント20pt

元のブックをコピーして、件のモジュールを削除したものを先に用意しておき、ファイルコピーで上書きすればいいかと。

id:kia_44

むむ、必要部分だけをコピーすれば良いってことですか?

確かに別ファイルに書き出せば良いだけではありますね。

うまく使えばこっちの方が効率が良いかもしれないので、

今度試してみたいと思います。

2010/09/03 15:31:08
  • id:Mook
    お使いの EXCEL のバージョンは何でしょうか。

    たしか2000(もっと前?)の頃はできたような気もしますが、セキュリティの観点から
    マクロでマクロを変更する機能は削除されたはずです。
  • id:kia_44
    ああ、すみません。
    人には環境をかいた方がいいとかいておきながら漏れてしまうなんて。
    会社で使用し、一部配布を行うため、どのPCでも使える用にしたいです。
    ので2000〜2007まであります。
    普段は2002か2007でを使ってます。
  • id:SALINGER
    ついでに、全てのモジュールとコードを削除するマクロ。
    http://d.hatena.ne.jp/SALINGER/20100903
  • id:kia_44
    2人にイルカ付けたいところですが、文章の長さで。

  • id:kia_44
    今更だけど「事態」って。ことえりの変換まだ慣れません。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません