1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #21413
    ssskyhigh
    参加者

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

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

    #21415
    Yutaka Emura
    キーマスター

    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
    参加者

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

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