tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VBよりExcelファイル上のマクロコードを削除する(VB6.0 応用編) ( No.16 )  [親スレッドへ]
日時: 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



 [スレッド一覧へ] [親スレッドへ]