マクロでモジュール解放を記述できる方法とは?

このQ&Aのポイント
  • Excelのマクロのセキュリティ設定で『信頼できる発行元』タブにある『Visual Basic プロジェクトへのアクセス』にチェックを入れ、参照設定に『Microsoft Visual Basic for Application Extensibility 5.3』を追加することでモジュールに対するアクセスが可能になります。
  • 具体的なアクセス方法は、VBEで以下のコードを記述します。oCompが解放したいモジュールになります。
  • ただし、エクセル2000では『コンパイルエラー:Meキーワードの使用方法が不正です』というエラーが出る場合があります。このエラーを解決する方法については詳細が不明です。
回答を見る
  • ベストアンサー

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

'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キーワードの使用方法が不正です」と出ます。 どこを直せば動くようになりますか?

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

標準モジュールの開放なら With ThisWorkbook.VBProject.VBComponents   .Remove .Item("開放したいモジュール名") End With

SHI-UE
質問者

お礼

ありがとうございます。出来ました。 こんなに簡単な3行で出来てしまうんですね。感動しました。 因みにエクセル2003以降でも動きますか? どこかの回答に2003以降は、VBでモジュールを突っつく事が出来なくなったと言われている方が居ましたので、確認出来ましたらお願いします。

関連するQ&A

  • 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)

  • アクセスで標準モジュールの中身を書き出したい

    http://officetanaka.net/excel/vba/vbe/05.htm の Sub Sample9() Dim Code As String Code = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(7, 5) MsgBox Code End Sub のエクセルではなく アクセスバージョンはないでしょうか? http://d.hatena.ne.jp/taka_2/20090907/p2 をアクセスの標準モジュールに貼り付けてみたのですが inFileName = WScript.Arguments(0) で実行時エラー424になってしまいます。

  • VBAでのマクロ削除

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

  • 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

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

    参照設定で[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です。

  • 2007から2010excel マクロ実行時エラー

    2007のexcelだと上手く動くのですが、2010のexcelだと”実行時エラー1004” 「プログラミングによるVisual Basicプロジェクトへのアクセスは信頼性に欠けます」 と表示されます。デバックすると下記の部分に色がつきます。どのような記述にしたら 回避できるか教えてください。 For Each objVBCOMPO In NewWkbook.VBProject.VBComponents←黄色になります! With objVBCOMPO.CodeModule ' コードを削除(全行) lngLines = .CountOfLines If lngLines <> 0 Then .DeleteLines 1, lngLines End With Next objVBCOMPO

  • 標準モジュールが1から3までありますが?

    エクセルVBEの画面を開くと、標準モジュールの下にモジュールが1から3まであります。 使い分けのルールのようなものはあるのですか? マクロの自動記録をしたらモジュール3に記述されていたのですが、通常、 自分で標準モジュールをを記述するときはモジュール1に記述するものですか?

  • シート・別ファイルを使用せずに、テキストデータを保存できないでしょうか。

    オフィス2003のデータで、数ヶ月に一度項目名とセル番地が変わるので、デフォルト設定をするマクロを作ろうと考えています。 以下のコードで、モジュール内のコードを置換するので解決しそうですが、 「ツール」→「マクロ」→「セキュリティ」で「□Visual Basicプロジェクトへのアクセスを信頼する」にチェックを入れないといけないので、やりたくないのです。 ------------------------------------------ Sub tikan() Dim i As Integer With ThisWorkbook.VBProject.VBComponents(\"Sample\").CodeModule For i = 1 To .CountOfLines If .Lines(i, 1) = \"置換前\" Then .ReplaceLine i, \"置換後\" End If Next i End With Target.Save End Sub ------------------------------------------ シート・別ファイルを使用せずに、デフォルト設定のテキストデータを記録する場所はないものでしょうか? ご存知の方、教えてください。

  • VBAで、VBProjectへのアクセスのための設定について教えてください。

    Excelで、下記のようなマクロを作成し動かしたころ、 「実行時エラー'6068'  Visual Basic Projectへのプログラム的なアクセスは信頼されません」 というエラーが出てしまいます。 どのように対処すれば動作するようになるのでしょうか。ご教示ください。よろしくお願いいたします。 【環境】 Windows XP & Office2003 【設定など】 Excel:[ツール]-[マクロ]-[セキュリティ]で、  「Visual Basic プロジェクトへのアクセスを信頼する」にチェック VBエディタ:[ツール]-[参照設定]で、以下の参照を追加  Microsoft Visual Basic for Applications Extensibility 5.3  Microsoft Word 11.0 Object Library 【作ろうとしているマクロ】 (1)マクロを含んだWordファイルを開く (2)Wordファイルのプロパティや、マクロのプログラムの行数などの値を取得 (3)Excelのシートに取得した値を入力 【作ったマクロ】 Sub test() Dim objWord As Object Set objWord = CreateObject("Word.Application") flname = "(フルパスでのファイル名)" With objWord .Visible = False .Documents.Open Filename:=flname, _ ReadOnly:=True, _ OpenAndRepair:=False With objWord.Documents aaa = .Item(1).BuiltinDocumentProperties(1).Value Worksheets("test").Cells(1, 1).Value = aaa 'ここまでは正常に動作します。 bbb = .Item(1).VBProject.VBComponents(1).CodeModule.CountOfLines 'ここで実行時エラーが出ます。 Worksheets("test").Cells(1, 1).Value = bbb .Item(1).Close SaveChanges:=wdDoNotSaveChanges End With End With objWord.Quit Set objWord = Nothing End Sub 以上です。 どうか、よろしくお願いいたします。

  • Accessのマクロをテキストファイルへ出力したい

    どなたかヒントを御願いします Accessのモジュールは、下記URLにてテキストファイルへ出力できますが、 Accessのマクロは、どのようにすれば良いのでしょうか? GUIでは無く、VBScriptやExcelのVBAにて実行したい Accessのモジュールを出力するURL↓ http://www.7key.jp/program/accapi/vbe.html

専門家に質問してみよう