直前に起動したマクロの再起動マクロNo.06648
でがらし さん 11/06/29 22:07
 
 直前に起動したマクロを再起動するマクロをお持ちの方がおいででしたら、ちょう
だいできないでしょうか? 

 同じマクロを繰り返して使うことがありますが、起動キーを忘れることがあります。
どんなマクロでも、直前に起動したマクロであれば、すぐに再起動することのできる
マクロがあると便利です。需要がありそうに思いますが、ウェブで発見することがで
きませんでした。

[ ]
RE:06648 直前に起動したマクロの再起動マNo.06650
秀まるお2 さん 11/06/30 11:13
 
 「マクロ・マクロ実行...」のダイアログボックスからマクロ実行するのであ
れば、もう一度「マクロ実行...」と実行した時のマクロ名は前回の物がそのま
ま出てきて、ただOKボタンを押すだけで繰り返し実行出来ると思います。

 ただし、いちいちダイアログボックスが出てきてOKを押さないといけないとい
うことは面倒ですけども…


 何かキー割り当てしてるマクロをキー一発で実行して、それを繰り返し実行す
るということでしたら、そのキーを繰り返し押す作戦もありかなぁと思います。


 それの他には…


 秀丸エディタのコマンド一覧の「その他」系に、「前の操作の繰り返し」とい
うのがありまして、それを実行すると、直前のコマンドが繰り返し実行可能です。
ただ、この場合も「マクロ・マクロ実行...」が繰り返し実行されるだけなので、
ダイアログボックスかいちいち出てきてOKボタンを押す必要はあります。


 他の作戦として…


 「マクロを起動するマクロ」と、
 「そのマクロで起動したマクロをもう一度実行するマクロ」

 の2つを用意しておいて、それで繰り返し実行させる作戦はありかなぁと思い
ます。マクロの例を書きますと…


 マクロを実行するマクロ:

    createreg "CURRENTUSER", "Software\\Hidemaruo\\MacroExecMacro";
    $macro = getregstr("PrevMacro");
    $macro = input( "実行したいマクロは?", $macro );
    if( $macro == "" ) {
        endmacro;
    }
    writeregstr "PrevMacro", $macro;
    closereg;
    execmacro $macro;

 「マクロを実行するマクロ」で実行したマクロを繰り返すマクロ:

    openreg "CURRENTUSER", "Software\\Hidemaruo\\MacroExecMacro";
    $macro = getregstr("PrevMacro");
    if( $macro == "" ) {
        endmacro;
    }
    closereg;
    execmacro $macro;

[ ]
RE:06650 あらーNo.06652
でがらし さん 11/06/30 12:29
 
 あらー、こっちは結構、大変なんですね。私は長い間、VZを使ってきたんですが、
VZでは直前のマクロを繰り返して使う機能が最初からあったのか、マクロで提供さ
れていたかでした。たくさんマクロを使っていると、直前に使ったことは覚えている
けど、起動キーは忘れることがあるので、重宝していました。

 秀丸でもたくさんマクロを使っています。よく使うマクロはCTRL+P+Sなどに割り当
てています。「マクロを実行するマクロ」を経由して使いたいマクロを起動すること
になると、使いたいマクロを起動するまでに1打鍵か2打鍵、増えそうですね。悩ま
しくなりました。

 ご教授、ありがとうございました。

[ ]
RE:06652 あらーNo.06653
秀まるお2 さん 11/06/30 17:52
 
 他の作戦も一応あるにはあります。

 繰り返し実行したいマクロすべてで、マクロの先頭に、

    createreg "CURRENTUSER", "Software\\Hidemaruo\\MacroExecMacro";
    writeregstr "PrevMacro", currentmacrofilename;
    closereg;

 の3行を入れるようにします。

 そうしておけば、あとは別途、

    openreg "CURRENTUSER", "Software\\Hidemaruo\\MacroExecMacro";
    $macro = getregstr("PrevMacro");
    if( $macro == "" ) {
        endmacro;
    }
    closereg;
    execmacro $macro;

 ってマクロを実行するだけで、先ほど実行したマクロが繰り返し実行されます。

 そういう作戦も一応アリということで…。(全部のマクロをいじるとなるとち
ょっと大変ですけども)

[ ]
RE:06650 メニュー・マクロへの組み込みはNo.06654
でがらし さん 11/07/01 06:17
 
 なるほど。そうすると、新しくマクロを作るたびに、冒頭にこの3行を入れるか、
同じマクロを繰り返して実行するたびに、そのマクロの冒頭にこの3行を入れるのが
いいですね。

 私はマクロ起動用のショートカットキーをメニュー・マクロで作っています。下記
がメニュー・マクロの1例ですが、このメニュー・マクロの段階で何かを組み込めば、
このメニュー・マクロを経由して起動したマクロは繰り返しが可能になるということ
はあるでしょうか? どなたかのマクロ用メニュー・マクロには、同一マクロの繰り
返し用のショートカットキーがあったような気がしました。

=======================================
menu
"&A AをGREP",
"&B このファイルをGREP:grepkore",
"&C GREP出力ファイルを削除",

 中略

"&Y YをGREP",
"&Z Z_GREP";

 if      (result ==0) endmacro;
 else if (result ==1) execmacro "grepa.mac";//A
 else if (result ==2) execmacro "grepkore.mac";//B
 else if (result ==3) execmacro "close-all-grep.mac";//C

 中略

 else if (result ==25) execmacro "grepy.mac";//Y
 else if (result ==26) execmacro "Z_GREP.mac";//Z

endmacro;
=======================================

[ ]
RE:06654 メニュー・マクロへの組み込みはNo.06655
秀まるお2 さん 11/07/01 16:18
 
 そのメニューマクロ自体にはwriteregstrの処理を入れないようにすれば、結
果として、「直前のマクロを繰り返すマクロ」を実行した時に、メニューをスキ
ップしていきなり目的のマクロが実行されるはずです。

 それはそれで、スキップするマクロが指定出来て便利な作戦になると思います。

[ ]
RE:06654 メニュー・マクロへの組み込みはNo.06656
山紫水明 さん 11/07/01 20:35
 
 でがらしさん,

> どなたかのマクロ用メニュー・マクロには、同一マクロの繰り返し用のシ
>ョートカットキーがあったような気がしました。

 拙作の「マクロの整理と実行およびキー割り当て拡張マクロ」では,そのよう
な処理をしていました。

> このメニュー・マクロの段階で何かを組み込めば、このメニュー・マクロを
>経由して起動したマクロは繰り返しが可能になるということはあるでしょう
>か?
 たとえば次のようにする方法もあるでしょう。
 menuarray 文を使えばもう少し簡略化できるかもしれませんが。
//----------------------------------------------------
前略

if      (result ==0) endmacro;
else if (result ==1) {
call WriteRegstr "grepa.mac";
execmacro "grepa.mac";//A
} else if (result ==2) {
call WriteRegstr "grepkore.mac";
execmacro "grepkore.mac";//B
} else if (result ==3) {
call WriteRegstr "close-all-grep.mac";
execmacro "close-all-grep.mac";//C
}

中略

endmacro;

WriteRegstr:
createreg "CURRENTUSER", "Software\\Hidemaruo\\MacroExecMacro";
writeregstr "PrevMacro", $$1;
closereg;
return;
//----------------------------------------------------

                          山紫水明(ユーザー)
                          SANSHISUIMEI

[ ]
RE:06655 メニュー・マクロへの組み込みはNo.06657
でがらし さん 11/07/02 10:40
 
  山紫水明さんのレスに従って、メニュー・マクロを書き換えたところ、期待通りの
動きをしました。

 ありがとうございました。

[ ]
RE:06656 成功報告No.06658
でがらし さん 11/07/02 10:44
 
 ご教授のようにメニュー・マクロを書き換えたところ、期待通りの動きをしていま
す。うれしいです。ありがとうございました。

 山紫水明さんご手製のマクロを、いくつかちょうだいして利用させていただいてま
す。重宝しています。この機会にお礼を申し上げます。

 実は前から、山紫水明さんにお願いしたいことがありました。別のスレを立てます。

[ ]