1 件の投稿を表示中 (合計 8 個)
  • 作成者
    投稿
  • #10827
    naru
    参加者

    マクロのカスタマイズで『ドキュメントが閉じた時』のイベントをONにしたマクロを使っているのですが、
    EmEditorを終了(複数ファイルを一度に閉じる)と、
    終了時にアクティブだったファイルに対してしかマクロが実行されません。
    開いていたファイル全てに対して実行したいと考えているのですが、何か対応策はありますでしょうか?


    EmEditor Professional (32-bit) Version 11.0.2
    Windows XP Professional Version2002 SP3

    #10828
    Yutaka Emura
    キーマスター

    naru 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    終了する時のイベントで、次のようなマクロを使って、開いているすべての文書に対して何か動作を行うことができます。これでいかがでしょうか?

    docs = new Enumerator( editor.Documents );
    for( ; !docs.atEnd(); docs.moveNext() ){
    doc = docs.item();

    // ここで、 各 doc に対して実行する
    }

    今後もどうぞよろしくお願い申し上げます。

    #10829
    naru
    参加者

    お返事、ありがとうございます。

    教えていただいた方法ですと、
    『ドキュメントが閉じた時』のイベントをONにしていると、
    1つのファイルを閉じた場合、閉じたファイル以外に対しても実行されてしまいます。
    EmEditorを閉じたときに動作としては理想的なのですが……。
    理想としましては、

    ■a.txt、b.txt、c.txtの3ファイルを開いている場合
     ・a.txtを閉じた場合:a.txtに対してマクロを実行する
     ・EmEditorを閉じた場合:全てのファイルに対してマクロを実行する

    といった感じになります。
    やはり難しいでしょうか?

    #10830
    Yutaka Emura
    キーマスター

    naru 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    ご指摘の件、きれいに処理できなくて申し訳ありません。少し面倒ですが、終了するときのイベントで、すべて閉じたときは、アクティブなマクロを無視するようにする、というのはどうでしょうか?

    今後もどうぞよろしくお願い申し上げます。

    #10832
    naru
    参加者

    江村さん、代替案をお考えいただきありがとうございます。
    ただマクロの知識が足りないため

    終了するときのイベントで、すべて閉じたときは、アクティブなマクロを無視するようにする

    をどうやればいいのかわかりません。
    すいません、お手数ですが詳しい方法を教えていただけますでしょうか?
    よろしくお願いします。

    #10833
    Yutaka Emura
    キーマスター

    naru 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    以下のような感じでイメージしていただければと思いました。マクロ ファイルは、少なくとも 2 個以上必要になり、共通関数を別のファイルに書くとすると、それを #include するため、合計 3 個になります。

    EmEditor が終了されるときのイベント:

    on_exit.jsee:

    #include “common.jsee”

    docs = new Enumerator( editor.Documents );
    for( ; !docs.atEnd(); docs.moveNext() ){
    doc = docs.item();
    // アクティブな文書でない場合のみ実行
    if( doc != editor.ActiveDocument() ){
    Func( doc );
    }
    }

    ファイルを閉じるときのイベント:

    on_close.jsee:

    #include “common.jsee”

    doc = editor.ActiveDocument();
    Func( doc );

    共通関数:

    common.jsee

    function Func( …. )
    ….

    今後もどうぞよろしくお願い申し上げます。

    #10836
    naru
    参加者

    江村さん
    詳細にお教えいただき、ありがとうございます。
    無事、イメージ通りの動作をさせることが出来ました。

    今回のことで要望したいことが出てきましたので、併せてこちらに書かせていただきます。
    自分の場合、イベントで実行する場合、それ以外では使わないので『ツールバーに表示しない』といったオプションが欲しいです。
    もしくは、普段も実行することを考慮し、イベントで実行するマクロをひとまとめにするオプションが欲しいです。
    これがあるとマクロツールバーに登録されるマクロが減り、視認性もよくなり、便利かなと思いました。
    ご検討いただけますと幸いです。

    #10859
    Yutaka Emura
    キーマスター

    naru 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    残念ながら、マイ マクロのマクロは、すべてマクロ ツール バーに表示されてしまいます。
    でも、マクロ ツール バーは非表示にして、新しいツール バーを新規に作成し、表示させたいマクロだけを、ツール バーに表示させることは可能です。新しいツール バーを新規に作成するには、[ツール] メニューより、[ツール バーの変更] を選択し、[新規作成] ボタンをクリックしてください。

    どうぞよろしくお願い申し上げます。

1 件の投稿を表示中 (合計 8 個)
  • このトピックに返信するにはログインしてください。