- 日時: 2007/08/20 22:17
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[エクセル][][] * * キーワード:マクロを削除,,,,, * ***********************************************************************************
元質問:VBよりExcelマクロの削除は可能でしょうか - kishitatsu 2006/01/27-13:00 No.5614
----------------------------------------------------------------------------------- Re: VBよりExcelマクロの削除は可能でしょうか - 花ちゃん 2006/01/27-13:39 No.5615 ----------------------------------------------------------------------------------- > これをVB6.0を利用してExcelマクロを削除することは可能でしょうか? 可能です。 下記に掲載されています。
415ブックに含まれているマクロをすべて削除する http://www.cbook24.com/bm_detail.asp?sku=99925364
又、下記でVBからExcelのマクロを作成する方法を解説されているので そのコードを応用して作成するのではなく、.Remove してやれば削除できるかと 思います。 http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=3815
ちょっと試して見ました。ご使用される場合は十分テスト願います。 Excel ファイルの読み込みは別途、マクロの削除部分のコードのみ Excel の起動・終了は別途追加して下さい。 '----------------------------------------------------------------- Dim i As Long With xlBook.VBProject For i = .VBComponents.Count To 1 Step -1 If .VBComponents(i).Type = vbext_ct_StdModule Then '標準モジュール以外はマクロの警告が表示されないので 'UserForm 及び クラスモジュール はそのままで 'If .VBComponents(i).Type <= 3 Then 'なら上記も削除 .VBComponents.Remove .VBComponents(i) ElseIf .VBComponents(i).Type = vbext_ct_Document Then .VBComponents(i).CodeModule.DeleteLines 1, _ .VBComponents(i).CodeModule.CountOfLines End If Next i End With '------------------------------------------------------------------------
----------------------------------------------------------------------------------- Re: VBよりExcelマクロの削除は可能.. - YK 2006/01/27-16:21 No.5617 ----------------------------------------------------------------------------------- > これをVB6.0を利用してExcelマクロを削除することは可能でしょうか? こんな風でどうでしょう。
wkbはワークブックのインスタンス
dim obj as object dim sht as worksheet
With wkb.VBProject ' If .Protection Then GoTo クローズ処理 ' モジュールの削除 For Each obj In .VBComponents If obj.Type < 4 Then ' Debug.Print obj.Name .VBComponents.Remove obj End If Next ' シートモジュールの中身削除 For Each Sht In wkb.Worksheets With .VBComponents.Item(Sht.Name).CodeModule .DeleteLines 1, .CountOfLines End With Next End With
|