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

    マクロの実行中に画面の描画を一時停止することは出来ませんか?

    document.stopViewUpdate();//
    //大量の置換処理
    ….
    //
    document.startViewUpdate();

    のように出来ないでしょうか。

    大量のマクロ処理しているときに、画面の再描画が追いつかない時があるし、マクロの動作中に編集内容が切り替わるのを眺めていても仕方がない気がします。

    高速化のためにも、いったん編集画面をフリーズさせて、マクロの実行後にマクロ処理された編集内容を表示するように。そういう関数を追加することは出来ないでしょうか

    #4069
    ShuHei
    メンバー

    Redraw = false;
    でご希望の動作になるかと思います。

    #4071
    takuya
    参加者

    ありがとうございます。

    documentの関数だと思ってdocumentの箇所ばかり見てました。助かります。

    Window.Redraw =false;
    //処理
    Window.Redraw =true;

    ですね。了解です。

    #4126
    takuya
    参加者

    Window.Redraw = false;
    ///たくさんの置換処理
    Window.Redraw =true;
    では期待通り動作しませんでした。なぜなのでしょうか?

    置換しているときに、画面描画をストップさせることができれば、無駄な強調表示などがなくなり、検索&置換の動作速度が速くなると思うのですが。マクロの実行が終わるまで画面の更新を押させる方法はこれだけなのかな。

    なにか良い手はありませんか?

    #4128
    ShuHei
    メンバー

    Window.Redraw = false;
    ///たくさんの置換処理
    Window.Redraw =true;
    では期待通り動作しませんでした。なぜなのでしょうか?

    置換対象の文字列とマクロ側の処理がわからないので
    なんとも言えません。

    最近私はver7しか触ってないのでなんとも言えませんが、大量の置換を行うのであれば一度
    text = document.selection.text
    等で変数に割当ててから
    text.replace~とかするほうが時間は早く終ります。

    通常であればRedraw=falseの設定をしていれば
    あまり気にならない範囲かと思います。
    もし、差し支えなければどのような置換を行おうと
    したかを投稿して頂ければ解決するかもしれません :-)

    #4145
    takuya
    参加者

    ありがとうございます。

    やってることは
    document.replace()
    を50回ほどです。

    ちゃんとした正規表現考えるのが面倒なので、パターンを見つけた順にどんどんreplace追加していくうちに、こんな数に。。。。

    おっしゃるとおり、String.replaceを使ってみることにします。画面が緑色(検索結果の強調表示)で埋まっちゃうんですよね。

    #4162
    ShuHei
    メンバー

    試しにdocument.replace()やってみましたが
    結構時間かかっちゃいますねぇ。

    若干使える正規表現が変ってしまいますが、
    String.replaceを使われたほうが速度的には良いかと思います。

    画面が緑色(検索結果の強調表示)で埋まっちゃうんですよね。

    因に
    document.HighlightFind=false
    を設定すれば強調表示をOFFにできますよ :-)

    #4187
    takuya
    参加者

    Shuheiさんありがとうございます。やっぱりdocument.replace()はもっさり動きますよね。WSHつかって正規表現ライブラリを直接コールした方が良いのかなぁ。

    document.HighlightFind=false

    画面が緑になるのは回避できました。強調表示OFF。ありがとうございます。以前自分が作ったマクロライブラリで使ってたのにスッカリ忘れてました。 :-)

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