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


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

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

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

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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/09/02 21:59:57
  • 終了:2010/09/03 15:32:04

ベストアンサー

id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692010/09/03 09:18:32

ポイント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

hathi回答回数205ベストアンサー獲得回数462010/09/02 22:37:02

ポイント20pt

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

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

良いと思います。

id:kia_44

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

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

ycyc回答回数37ベストアンサー獲得回数62010/09/03 00:02:48

ポイント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

SALINGER回答回数3454ベストアンサー獲得回数9692010/09/03 09:18:32ここでベストアンサー

ポイント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

ふるるP回答回数192ベストアンサー獲得回数212010/09/03 14:22:40

ポイント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
    今更だけど「事態」って。ことえりの変換まだ慣れません。

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません