こちらの続きです。
手抜きマクロ起動用メニュー1 - C#ATIA
CATVBAプロジェクトにマクロのモジュールを追加するだけで、
メニューボタンを自動的に追加します。
但し、追加するモジュールにボタンとなる情報を追記する
必要が有り、以下 [タグ] と表記して説明します。
〇ファイルの構成
同一のプロジェクト内に以下のファイルをD&Dで追加してください。
・Cat_Macro_Menu_Model.bas ・Cat_Macro_Menu_View.frm ・Cat_Macro_Menu_View.frx ・Button_Evt.cls ・KCL.bas
ツールバーに登録する、通常のマクロのメニューから起動する際は
「Cat_Macro_Menu_Model.bas」の「CATMain」を指定してください。
〇タグ記載位置
タグは各モジュールの宣言セクション(先頭部分)に記載する必要が有ります。
こちらで説明されている宣言セクションになります。
Office TANAKA - VBAの変数[変数の適用範囲]
特に注意が必要なのは、上記の赤矢印のラインより上に記載する
と言うことです。
このような状態(ラインがない状態)ではタグを認識する事が
出来ない為メニューにボタンが表示されません。
こちらの様に出来るだけ [Option Explicit] を宣言し、
その上にタグを記載する事をオススメします。
〇タグフォーマット
タグのフォーマットは
{ キーワード : 値 }
の状態になっている必要が有ります。("{" ":" "}" は半角です)
Upしたサンプルでは1行に1タグになっていますが。
'{GP:1}{BackColor:12648447} Option Explicit Sub CATMain() MsgBox "hoge" End Sub
の様に一行に複数のタグを記載しても大丈夫です。
※タグのキーワードは半角文字で大・小文字は問いません
〇タグ内容
タグは自動生成するボタンの情報を記載する必要が有ります。
{Gp} : グループの略称でボタン作成する際は必須です。
値はLong型で指定してください。
メニュー内のどのタブにボタンを作成するかを示しています。
Upしたファイルの「Cat_Macro_Menu_Model.bas」の宣言セクション部
の「GROUP_NUMBER_CAPTION」定数部分の数値と一致させる
必要が有ります。
'vba CATIA V5用 マクロ起動(テヌキ)メニュー Ver0.0.1 by Kantoku 'Cat_Macro_Menu_Model.bas 'using-'KCL0.0.12' ・・・ 'メニューのマルチページの設定 '変更する際は '{ タグのグループ番号 : ページのタイトル文字 } 'の状態にして下さい Private Const GROUP_NUMBER_CAPTION = _ "{ 1 : Part }" & _ "{11 : Assy }" & _ "{21 : Draw }" & _ "{51 : Other }" ・・・
現状では、1-Part 11-Assy 21-Draw 51-Other
の設定になっているので、任意の数値を記載してください。
逆にライブラリのようなモジュールファイルの場合、ボタンを作成したくない
はずです。{Gp}タグを記載しない事でメニューに表示させない事に
なります。
{Ep} : エントリーポイントの略称で任意の設定で、値は文字列型です。
各モジュールのエントリーポイント(実行されるプロシージャ名)を指定
しますが、省力時は「CATMain」になります。
Upしている「sample_IsExists_LeftAxis.bas」では
「CATMain」が無く、以下の状態になっています。
'vba sample_IsExists_LeftAxis_ver0.0.1 using-'KCL0.0.12' by Kantoku 'Part内の左手座標系の有無チェック '{Gp:1} '{Ep:LeftHand} '{Caption:LeftHandAxis} '{ControlTipText:Part内の左手座標系の有無チェック} '{BackColor:33023} Option Explicit Sub LeftHand() 'ドキュメントのチェック If Not CanExecute("PartDocument") Then Exit Sub ・・・
{Ep:LeftHand}となっており、ボタンを押した際
「LeftHand()」が実行されるようになっています。
{Ep}タグで指定されたプロシージャが見つからない場合は
自動的に「CATMain」を探しますが、両方見つからない場合は
ボタンが作成されません。
制限としてチェックがちょっと甘く「Private Sub」や「Function」
となっているプロシージャは指定しないで下さい。
又、引数付きのプロシージャも指定しないで下さい。
他は全てでは有りませんが、CommandButtonオブジェクトのプロパティを
指定する事が可能です。制限はこちらです。
・レイアウトを維持する為これらのキーワードを指定しても
無視されます。
「Top」「Left」「Height」「Width」
・プロパティの値がオブジェクトとなっているものは指定されても
無視されます。
「Font」「MouseIcon」「Picture」
・プロパティの値が定数となっている場合、定数ではなく
数値で指定する必要があります。(後に説明します)
{Caption} : ボタンに表示される文字で、値は文字列型です。
何のマクロのボタンかわからなくなるため設定を推奨します。
{ControlTipText:} : ボタン上にマウスカーソルを持っていく
ことでに表示される文字で、値は文字列型です。
何のマクロのボタンかわからなくなるため設定を推奨します。
{BackColor}:ボタンの色で、値はLong型です。
通常プロパティでは、[&H000000FF&]のような状態で
表示されていますが、値部分にそのまま入力しても
色は反映されません。
イミディエイトウインドウで「?」(又はprint)で表示させると
Long型の値が返って来ますので、この値を設定してください。
?&H000000FF& 255
又、定数を指定いるプロパティに関しても同様の方法で
Long型で設定してください。
・・・正直に書くと、試していませんが。
タグについてグダグダ記載しましたが、見た目。機能を
度外視すれば
'{Gp:1}
さえ追記すれば、メニューにボタンが表示されるようになります。
フォーム側の説明は次回に