• ベストアンサー
  • 暇なときにでも

標準モジュールを削除したい。(VBA)

VBAで、VBAの標準モジュールを削除したいのですが、なかなか出来ません。たぶん、コレクションについての認識があまいからだと思います。VBComponents コレクションのobject.Remove(component)のヘルプには、VBProjects コレクションには、スタンドアロン プロジェクトを指定します。とありますが、そもそもスタンドアロンプロジェクトって何ですか?Application.VBE.VBProjects(4).VBComponents(1).とするとコレクションでなくなってしまいますが、どうやってモジュールと特定するのでしょうか?どなたか詳しい方いらっしゃいましたらご指導願います。よろしくお願いいたします。 VBIDEのライブラリーです。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2701
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • taocat
  • ベストアンサー率61% (191/310)

こんばんは。 VBAで、VBAのコードを扱うのは、ある程度VBAをマスターしてからの方がベターだと思うのですが、色々質問され懸命にVBAを学ぼうとされているようなので、シンプルなサンプルをひとつ。 先ず、新しいブックのシートモジュール、標準モジュール、それからUserFormに適当なコードを書いおきます。 そして以下のコードを同じブックの標準モジュールに書いて実行すると、標準モジュールだけが全て削除されます。 ---------------------------------------- Sub CodeDelete()  Dim Obj As Object  For Each Obj In ThisWorkbook.VBProject.VBComponents   With Obj     If .Type = 1 Then         Application.VBE.activeVBProject.VBComponents.Remove Obj     End If   End With  Next Obj End Sub ----------------------------------------------- 尚、これを2002以降で実行する時は、マクロ「セキュリティ」ダイアログで、「Visual Basic Projectへのアクセスを信頼する」にチェックを入れてから実行すること。 それから以前似たような質問に答えてありますので以下のURLも覗いてみてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1347061 後は自力で!・(^^;;; 以上です。  

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご指導有難うございます。 オブジェクト思考!理解したつもりで、全く解っていない!!ヘルプが読めるようになったつもりで、全く読むことが出来ない!自分を痛感しました。 本当に有難うございます。今後ともよろしくお願いいたします。 与えていただいた内容を肝に銘じ自己研鑽に励みたく思います。有難うございました。

関連するQ&A

  • excel VBA コピーファイルのマクロ削除

    下記3つの、プロシージャを組み合わせて、下記のやりたいことをやりたいのですが、うまくいきません。 どうかご教授の程よろしくお願いいたします。 excelは2000です。 ○やりたいこと 今現在開いているファイルの、コピーをデスクトップに保存して、その保存したブックのマクロ(標準モジュールと、コマンドボタン)を削除したい。 ○自分でやろうとすると コピーをデスクトップに保存すると、コピー元のファイルが勝手に閉じてしまい、コピー先のファイルのマクロを削除できない。 '■デスクトップにコピー保存 Sub copysave() Dim 場所 As String 場所 = CreateObject("WScript.Shell").SpecialFolders("Desktop") ActiveWorkbook.SaveAs Filename:=場所 & "\" & Format(Date, "yyyymmdd") & "○◆△.xls" End Sub '■標準モジュールの削除 Sub DelModule() Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module1") Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module2") End Sub '■CommandButtonの削除 Sub DelCommandButton() Dim c As Excel.OLEObject For Each c In Worksheets(1).OLEObjects   If TypeOf c.Object Is Msforms.CommandButton Then c.Delete End If Next End Sub

  • ExcelVBAでモジュールシートの内容更新を自動で行いたい

     Excelで、ファイルを開いたときに、そのファイルのモジュールシートの内容を自動的に更新するVBAを書きたいのです。  gooで質問しながらも、とりあえず自分で以下のように作ってみました。どのような方法にしたかというと、Auto_Openでファイルを開いたときに、まず対象となる更新前のモジュールシートを削除(更新前が存在しない場合はエラーになるのでOnErrorGotoで回避)し、その後、あらかじめ更新後の内容を記述しておいたC:\定義.txtというファイルを更新後のモジュールシートとして付け加えるというものです。  とりあえずはうまく内容更新できたのですが、ファイルを開いた際に自動的同時に開かれるBook1.xlsなどのファイルにも更新後のモジュールシートが付け加わってしまうのです。つまり、更新させたいファイルだけでなく、その他のファイルも更新の対象となってしまう場合があるのです。  いろいろ試してみると、すでにExcelを立ち上げた状態で当ファイルを開いた場合は、それ以前に開いていたファイルが更新対象になることはないようです。Excelを立ち上げていない状態からエクスプローラなどで当ファイルを開き、同時に自動的にExcelやBook1などのファイルも立ち上がる際に、Book1なども更新対象となってしまうようです。  更新させたいファイルのモジュールシートだけを更新するには、どのようにVBAを書いたらいいのか、ヒントくらいでも結構ですのでご教授ください。 Sub Auto_Open() 削除 追加 End Sub Sub 追加() With Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule) .Name = "定義" .CodeModule.AddFromFile ("C:\定義.txt") End With End Sub Sub 削除() On Error goto trap Application.VBE.ActiveVBProject.VBComponents.Remove _ Application.VBE.ActiveVBProject.VBComponents("定義") Trap: End Sub

  • VBAでのマクロ削除

    複数のExcelファイルを読み込み必要なデータのみをsheet1に寄せ集め最後にExcel形式で保存するというコードを書きました。保存したExcelファイルは、次回同じVBAのコードからWorkbooks.Open Filenameで開く必要があるため、マクロを削除してから保存しないといけないことに気付きました。 ACompo = ExcelWorkbook1.VBProject.VBComponents.Item("module1") ExcelWorkbook1.VBProject.VBComponents.Remove (ACompo) 最終的にやりたいことは、3つのフォームと2つの標準モジュールを削除したい(ワークブックモジュールにもコード書いてありますのでそれも) ということになります。 よろしくお願いします。

  • EXCEL2003VBA 「マクロでモジュール解放」

    質問番号:5548045の関連質問です。 EXCEL2003VBA で、セキュリティ設定で『Visual Basic プロジェクトへのアクセス』にチェックを入れて、Module1に下記のように「モジュール解放」マクロを作成しましたが、Module1が削除されません。(1)を削除して、手動操作で変更を保存でファイルを閉じるとModule1も削除されます。 Module1の削除も全てマクロで行うやり方を教えてください。 With ThisWorkbook.VBProject.VBComponents .Remove .Item("Module1") .Remove .Item("Module2") .Remove .Item("Module3") End With ActiveWorkbook.SaveAs Filename:="D:\TEST" ActiveWorkbook.Close ・・・(1)

  • 過去レス「マクロでモジュール解放を記述出来るか」

    '08.1.15のご質問No.3682185「マクロでモジュール解放を記述出来るか?」 のご回答が以下でした。 -------- まず Excelのマクロのセキュリティ設定で『信頼できる発行元』タブにある『Visual Basic プロジェクトへのアクセス』にチェックを入れておきます VBEで参照設定に『Microsoft Visual Basic for Application Extensibility 5.3』を追加します これでモジュールに対するアクセスができるようになります 実際のアクセス方法ですが Dim oVBE as VBE, oPrj as VBProject, oComp as VBComponent ' oCompがモジュールになります Set oVBE = Me.Application.VBE Set oPrj = oVBE.VBPrjects("VBAProject") for each oComp in oPrj.VBComponents   if oComp.Name = "開放したいモジュール名" then     oPrj.VBComponents.Remove oComp   end if next といった具合になります 【ここから質問です】 私のはエクセル2000ですが、上記をやると、 「コンパイルエラー:Meキーワードの使用方法が不正です」と出ます。 どこを直せば動くようになりますか?

  • UserFormから標準モジュールのIEを制御

    VBAで、標準モジュールにて呼び出したIEオブジェクトをUserForm上から 制御する方法があればご教授願います。 Sub SampleModule() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp" UserForm1.Show ~~~~~~~~~~ Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Module1.SampleModule.objIE.Navigate "http://www.google.co.jp" ↑こういう感じの解をイメージしてます。 End Sub つまり、標準モジュールでセットしたオブジェクトを、呼び出した フォーム上から参照したいわけです。宜しくお願いします。

  • 標準関数が見つからない

    こんにちは、honiyonです。  希に、space$や trim$といった標準関数に対して「プロジェクト、又はライブラリが見つかりません。」というエラーで出ます。   これは一体何が原因なのでしょうか?  対応のしようがなく本当に困っています(+_+)  開き直してもだめ、再起動かけてもだめです。 プロジェクトファイルの何か設定が壊れるのでしょうか。 同症状を体験した友人は「適当にいじっていたら直った」といっていますが...(^^;  これが発生するパターンとして、他のコンピュータでプロジェクトを修正し、自分のコンピュータに移してきた時に発生する事があるようです。  また、似た症状で、同プロジェクト内にある、他モジュールで public宣言しているにも関わらず、変数が見えなくなる事もあります。  環境は、VB6.0(SP5), Win2K です。  編集した他PCは、VB6.0, Win2Kです。  よろしくお願いします(..

  • VBAの将来性について

    いつもお世話になっております。 VBAのことを調べていたら以下のように書かれていました。 >近年マイクロソフト社はActiveX/Component Object Modelから.NET Frameworkへの転換を進めており >Visual Basic for Applications - Wikipedia >http://ja.wikipedia.org/wiki/VBA 調べてみるとVSTOという技術でのOffice開発があって、 それへの転換を進めているということなのだろうと推測しました。 そこで質問なのですが、VBAの技術は追加されていますか? Office2003と比較してOffice2007でこういう技術が追加されたという 情報がございましたら、教えて頂けませんか? マイクロソフト社としてはVBAにこれから力を入れていくものなんでしょうか? VBAがなくなるということはないと思うのですが、 技術の追加は主にVSTO側に行っているようであれば、 今後のOffice開発の方針を考えたいと思い、質問させて頂いております。 ぜひよろしくお願いいたします。

  • イミディエイトウインドウに吐き出すには

    参照設定で[Microsoft Visual Basic Application Extensibility]をチェック Sub subExportAllModuleforAccess() Dim vbcComp As VBIDE.VBComponent For Each vbcComp In Application.VBE.ActiveVBProject.VBComponents Debug.Print vbcComp.Name, vbcComp.Type vbcComp.Export ("C: \test.txt") Next vbcComp End Sub このコードで、コードの中身をテキストに吐き出すのではなく Debug.Printでイミディエイトウインドウに吐き出すには どうすれば良いでしょうか? アクセス2010です。

  • PowerPointでVBAを使いたい。

    ExcelVBAでやっている事を、PowerPointでもやりたいのですが。 具体的には  「ExcelBookを開いた時に自動的にシートのフッターに所有者名を設定する。」 これと同じ事をPowerPointでやりたいのですが。 Excelの場合には標準モジュールに書いたSubをExcelObjectであるThisWorkbookの OpenイベントからCallする事で実現しました。 そこで、次の事を教えて下さい。 (1)PowerPointのObjectはどうやって設定するのでしょうか。デフォルトではObjectがありません。 (2)そのObjectの名前は何でしょうか。 (3)PowerPointのObjectのイベント一覧がどこかにありませんか。 以上ですが、ご存知の方がいらっしゃいましたらご教示、よろしくお願いします。