3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #21413

    ssskyhigh
    Participant

    こんにちは。いつもお世話になっております。
    マクロ(java script)で、一種のジャンプ機能を実現したいと思っています。
    editor.ExecuteCommandByID(4096); // 新規文書
    editor.OpenFile(fileName);
    を実行し、立て続けに
    document.selection.Find(); を実行するという作業を行いたいのですが、
    Find(); に対して「現在、この操作を行うには操作対象のドキュメントがアクティブである必要があります。」というマクロエラーが出てしまいます。
    どうすれば新しく開いたファイルをアクティブにできるのでしょうか?

    また、このような機能を実現するために、もっとよい方法はあるでしょうか?
    初歩的な質問で申し訳ありません。どうかご教示賜われればと存じます。

    #21415

    Yutaka Emura
    Keymaster

    ssskyhigh 様

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

    doc = document;
    editor.ExecuteCommandByID(4096);
    editor.OpenFile("E:\\test\\test.txt", 0, 0);
    doc.selection.Find("a", eeFindNext );

    というように、アクティブな文書を切り替える前の Document オブジェクトを参照している場合には、「現在、この操作を行うには操作対象のドキュメントがアクティブである必要があります。」というマクロエラーが出てしまいます。この場合は、新しくアクティブになった document オブジェクトに対して、Find メソッドを実行するようにしてください。

    以下のようなマクロで問題なく動作します。

    editor.ExecuteCommandByID(4096);
    editor.OpenFile("E:\\test\\test.txt", 0, 0);
    document.selection.Find("a", eeFindNext );

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

    #21420

    ssskyhigh
    Participant

    ありがとうございました!問題が解決しました。
    エラーの原因は、
    with(document.selection){
    editor.ExecuteCommandByID(4096); // 新規文書
    editor.OpenFile(fileName);
    Find();
    }
    となっていたことだったようです。結局、
    editor.OpenFile(fileName, 0, eeOpenAllowNewWindow);
    document.selection.Find();
    としました。お忙しい中、初歩的な質問にも丁寧にご返信いただき、恐縮です。
    どうもありがとうございました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)

このトピックに返信するにはログインが必要です。

友達に知らせる... Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone