アクティブなタブのマクロを実行する
アクティブなタブを マクロとして実行 します。[1]
ソースコード
#title = "このマクロを実行"
#tooltip = "アクティブなタブのマクロを実行する"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",15
/**
* [マクロ] メニューの「これを選択」と「実行」をおこなう
*
* ※ タブが未保存の場合はマクロを実行しない
* ※ タブの実体ファイルの拡張子だけを確認し、
* ファイルの内容までは確認せずにマクロとして実行する
* ※ Mery 用のマクロでなくても「これを選択」コマンドが実行されるので
* [マクロのカスタマイズ] に登録されてしまうことになる
*/
// ■ マクロ用の拡張子
var reg = /^(?:js|pl|php|py|rbs|vbs)$/;
var d = editor.ActiveDocument;
var dName = d.Name, dSaved = d.Saved;
if ( ! dName || ! dSaved ) {
Status = "ファイルが保存されていません。";
}
else if ( dName == ScriptName ) {
Status = "「このマクロを実行」";
}
else {
var ext = dName.substr( dName.lastIndexOf( "\." ) + 1 ).toLowerCase();
if ( reg.test( ext ) ) {
Sleep( 200 ); // キーを放すまでの時間稼ぎ
editor.ExecuteCommandByID(MEID_MACROS_SELECT_THIS=2175); // これを選択
new ActiveXObject( "WScript.Shell" ).SendKeys( "{F4}" ); // マクロの実行
}
else {
Status = "このファイルはマクロではありません。";
}
}
memo
- editor.ExecuteCommandByID( MEID_MACROS_RUN = 2171 );
だと実行されないようなので、WSH のキーストーロークエミュレーションで「実行(R)」のショートカットキー F4 を送信させるようにしてあります。
「実行(R)」のショートカットキーを変更している場合、このマクロは正しく機能しません。 - 設定変数で列挙した拡張子が妥当かどうか分かりません…。
実行条件は拡張子ではなく編集モードにしたほうがよいかも?
スポンサーリンク