こちらの続きです。
手抜きマクロ起動用メニュー2 - C#ATIA
「Cat_Macro_Menu_Model.bas」の宣言セクション部に幾つか定数を
設けています。お好みで変更してください。
'Cat_Macro_Menu_Model.bas 'using-'KCL0.0.12' 'タグを追記したモジュールをプロジェクトに追加するだけで '自動的にボタンを追加します Const FormTitle = "Macro" '----- メニューの仕様 お好みで --------------------------------------- 'メニューの表示方法 'True-モーダレス表示 False-モーダル表示 Private Const MENU_SHOW_TYPE = True 'メニューを閉じるタイミング 'True-フォームのXボタンを押して閉じます False-ボタンクリック後閉じます Private Const MENU_HIDE_TYPE = True 'メニューのマルチページの設定 '変更する際は '{ タグのグループ番号 : ページのタイトル文字 } 'の状態にして下さい Private Const GROUP_NUMBER_CAPTION = _ "{ 1 : Part }" & _ "{11 : Assy }" & _ "{21 : Draw }" & _ "{51 : Other }" '----------------------------------------------------------------- ・・・
・「MENU_SHOW_TYPE」
メニューの表示で、モーダレスかモーダルかをBoolean型で切り替えられます。
・「MENU_HIDE_TYPE」
メニュー終了タイミングですが、Upしたデータのコメント間違えていました・・。
正しくは上記の状態で、Boolean型で切り替えられます。
ボタンクリック後に終了させるか、表示しっぱなしかです。
実質、「モーダレス + 表示しっぱなし」 か 「モーダル + クリック後終了」
に、なるのだろうと思います。
・「GROUP_NUMBER_CAPTION」
マルチページの分類と表示させる文字になります。
挿入する標準モジュールの {Gp}タグは、こちらの番号にない場合は
ボタンが表示されません。
続いて、フォームコードの「Cat_Macro_Menu_View.frm」の宣言セクション部です。
フォームのレイアウト等はこちらの定数で、若干調整が可能です。
(環境によってはボタンの文字が途切れる等あるかもしれないため・・・))
'Cat_Macro_Menu_View.frm 'メニューのUIです。 'フォーム Private FrmMargin As Variant '上,下,左,右のボタン配置のマージン Private Const ADJUST_F_W = 13 'フォームの左右の調整幅 Private Const ADJUST_F_H = 30 'フォームの上下の調整幅 'マルチページ Private Const ADJUST_M_W = 5 'マルチページの左右の調整幅 Private Const ADJUST_M_H = 18 'マルチページの上下の調整幅 'ボタン Private Const BTN_W = 70 'ボタンの幅-フォームの最低幅以下にすると余白が増える Private Const BTN_H = 20 'ボタン1個の高さ ・・・
各マルチページに該当するボタンがない場合は、ページ自体が作成されません。
又、各ページに配置されるボタンの順番は、モジュール名でソートして表示させています。
好みの順番で表示させたい場合は・・・・モジュール名を工夫してください。
(良いアイデアが思いつきませんでした)
あと何か有ったかなぁ? マクロ用のメニューなんて今更だし。
念の為、このままではOffice製品では機能しないです。
プロジェクト名・パスの取得方法は、imihitoさんが
こちらのコメント欄に記載して頂いてます。
実行中のプロジェクト名とパス取得する - C#ATIA
ボタン押した際の各マクロの実行方法は、こちらの
「Application.Run」の方法で可能だろうと思います。
外部のマクロを実行する2 - C#ATIA
正規表現もまともに使ったの初めてでしたし、まさか自分が
CallByNameを使うコードを書く日が来るとは思っていませんでしたよ。