- 作成者投稿
- 2007年1月27日 2:52 pm #4067takuya参加者
マクロの実行中に画面の描画を一時停止することは出来ませんか?
document.stopViewUpdate();//
//大量の置換処理
….
//
document.startViewUpdate();のように出来ないでしょうか。
大量のマクロ処理しているときに、画面の再描画が追いつかない時があるし、マクロの動作中に編集内容が切り替わるのを眺めていても仕方がない気がします。
高速化のためにも、いったん編集画面をフリーズさせて、マクロの実行後にマクロ処理された編集内容を表示するように。そういう関数を追加することは出来ないでしょうか
2007年1月27日 4:02 pm #4069ShuHeiメンバーRedraw = false;
でご希望の動作になるかと思います。2007年1月27日 9:42 pm #4071takuya参加者ありがとうございます。
documentの関数だと思ってdocumentの箇所ばかり見てました。助かります。
Window.Redraw =false;
//処理
Window.Redraw =true;ですね。了解です。
2007年2月7日 8:41 am #4126takuya参加者Window.Redraw = false;
///たくさんの置換処理
Window.Redraw =true;
では期待通り動作しませんでした。なぜなのでしょうか?置換しているときに、画面描画をストップさせることができれば、無駄な強調表示などがなくなり、検索&置換の動作速度が速くなると思うのですが。マクロの実行が終わるまで画面の更新を押させる方法はこれだけなのかな。
なにか良い手はありませんか?
2007年2月7日 4:42 pm #4128ShuHeiメンバーWindow.Redraw = false;
///たくさんの置換処理
Window.Redraw =true;
では期待通り動作しませんでした。なぜなのでしょうか?置換対象の文字列とマクロ側の処理がわからないので
なんとも言えません。最近私はver7しか触ってないのでなんとも言えませんが、大量の置換を行うのであれば一度
text = document.selection.text
等で変数に割当ててから
text.replace~とかするほうが時間は早く終ります。通常であればRedraw=falseの設定をしていれば
あまり気にならない範囲かと思います。
もし、差し支えなければどのような置換を行おうと
したかを投稿して頂ければ解決するかもしれません :-)2007年2月12日 4:13 am #4145takuya参加者ありがとうございます。
やってることは
document.replace()
を50回ほどです。ちゃんとした正規表現考えるのが面倒なので、パターンを見つけた順にどんどんreplace追加していくうちに、こんな数に。。。。
おっしゃるとおり、String.replaceを使ってみることにします。画面が緑色(検索結果の強調表示)で埋まっちゃうんですよね。
2007年2月14日 11:21 am #4162ShuHeiメンバー試しにdocument.replace()やってみましたが
結構時間かかっちゃいますねぇ。若干使える正規表現が変ってしまいますが、
String.replaceを使われたほうが速度的には良いかと思います。画面が緑色(検索結果の強調表示)で埋まっちゃうんですよね。
因に
document.HighlightFind=false
を設定すれば強調表示をOFFにできますよ :-)2007年2月21日 9:41 pm #4187takuya参加者Shuheiさんありがとうございます。やっぱりdocument.replace()はもっさり動きますよね。WSHつかって正規表現ライブラリを直接コールした方が良いのかなぁ。
document.HighlightFind=false
画面が緑になるのは回避できました。強調表示OFF。ありがとうございます。以前自分が作ったマクロライブラリで使ってたのにスッカリ忘れてました。 :-)
- 作成者投稿
- このトピックに返信するにはログインしてください。