- 作成者投稿
- 2015年3月8日 3:15 pm #21413ssskyhigh参加者
こんにちは。いつもお世話になっております。
マクロ(java script)で、一種のジャンプ機能を実現したいと思っています。
editor.ExecuteCommandByID(4096); // 新規文書
editor.OpenFile(fileName);
を実行し、立て続けに
document.selection.Find(); を実行するという作業を行いたいのですが、
Find(); に対して「現在、この操作を行うには操作対象のドキュメントがアクティブである必要があります。」というマクロエラーが出てしまいます。
どうすれば新しく開いたファイルをアクティブにできるのでしょうか?また、このような機能を実現するために、もっとよい方法はあるでしょうか?
初歩的な質問で申し訳ありません。どうかご教示賜われればと存じます。2015年3月9日 3:03 am #21415Yutaka 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 );
よろしくお願い申し上げます。
2015年3月9日 8:41 pm #21420ssskyhigh参加者ありがとうございました!問題が解決しました。
エラーの原因は、
with(document.selection){
editor.ExecuteCommandByID(4096); // 新規文書
editor.OpenFile(fileName);
Find();
}
となっていたことだったようです。結局、
editor.OpenFile(fileName, 0, eeOpenAllowNewWindow);
document.selection.Find();
としました。お忙しい中、初歩的な質問にも丁寧にご返信いただき、恐縮です。
どうもありがとうございました。 - 作成者投稿
- このトピックに返信するにはログインしてください。