こちらの続きです。
CATVBAの標準モジュールをマクロで削除したい (希望)2 - C#ATIA
何から何まで教わっていながら、やっていませんでした、スイマセン。
出来上がりましたので、ご報告を。
コード等はいつものGrabCADさんにUpしております。
GrabCAD - CAD library
マクロの実行は、標準モジュールの "RemoveRecordingMacro_Main"
の "RemoveRecordingMacro_Start" 関数から開始です。
※開発者向けのマクロの為、VBEditorからの起動しかテストしてません。
ダイアログが表示されます。センスが悪いのですが、僕には
これが限界です。
"VBプロジェクト名" コンボボックスから削除対象となるモジュールを持つ
プロジェクトを選択して下さい。
リストボックス内には、「モジュール」から始まる名称の標準モジュールのみが
表示されます。日本語環境での利用を想定している為この様な
仕様としましたが、他言語での利用を希望する方は、
標準モジュールの "RemoveRecordingMacro_Main" 内の
・・・ 'リストに表示させるフィルタ '標準モジュールかつ"モジュール"で始まるか? 'vbext_ComponentType '1-vbext_ct_StdModule 2-vbext_ct_ClassModule 3-vbext_ct_MSForm Private Function CompListFilterCheck(ByVal Comp As Object) As Boolean CompListFilterCheck = False If Not Comp.Type = 1 Then Exit Function Dim Name$: Name = Comp.Name 'If Not InStr(Comp.Name, "モジュール") = 1 And _ ' Not InStr(Comp.Name, "Module") = 1 Then If Not InStr(Comp.Name, "モジュール") = 1 Then Exit Function End If CompListFilterCheck = True End Function ・・・
を条件を修正する事で、可能かと思われます。
右側のテキストが表示される部分は、最後にリストで選択された
モジュール内の関数名を表示しています。
標準モジュールの情報としては、やや不足気味ではありますが、
スペースの関係上、この様にしました。
何も情報が無いまま、削除する?しない?を決めるには
あまりに不安だった為・・・。
リスト選択後 "選択リストを削除" ボタンを押す事で、確認用のダイアログ が
表示されます。
削除実行の際は "はい" を選択してください。
先程の画面の物を、全選択して実行すると
左の状態から、右の状態になります。 が、
プロジェクトを保存しないと再度開いた際、元に戻ります。
(マクロではプロジェクトの保存は行っていません)
テストは "VBA6.5" と "VBA7.1" で行っています。
VBA7の場合は、この様な訳のわからないダイアログが表示されマクロが
実行できないかと思われます。
その際は、標準モジュールの "RemoveRecordingMacro_Main" 内の宣言部分の
・・・ '******* Private Const MSAPC_Apc_Name = "MSAPC.Apc.6.2" '重要です 'VBA6.x - "MSAPC.Apc.6.2" 'VBA7.x - "MSAPC.Apc" 又は "MSAPC.Apc.7.1" '******* ・・・
MSAPC_Apc_Name定数を "MSAPC.Apc" 又は "MSAPC.Apc.7.1" に変更する事で
実行可能かと思われます。
本当は、こちらの最後の方に書いたコード
CATVBAの標準モジュールをマクロで削除したい (希望)2 - C#ATIA
'VBAのバージョンチェック Dim COMObjectName$ #If VBA6 Then COMObjectName = "MSAPC.Apc.6.2" #ElseIf VBA7 Then COMObjectName = "MSAPC.Apc.7.1" #Else MsgBox "VBAのバージョンが未対応です" Exit Function #End If
で、対応できるのかと思っていたのですが、上手く行きませんでした。
(VBA7.1で実行してもVBA6側を処理してしまいました)
VBAのバージョン取得は、上記のコード以外は無いと思っているのですが、
他にも判断する方法があるのかな?
(On Error ~ で囲んで、VBA7のみの型に代入するとか、かな?)
最後になりましたが、imihitoさんアドバイス無しでは実現出来ませんでした。
本当に貴重な情報ありがとうございました。