はじめまして。
最近マクロに手を出し始めました。
私の環境のせいなのかどうかは分かりませんが、数の多い文字数をCount.ppaでカウントしようとすると時間がかかってしまいます。
(例えばCount.ppaを開いて全選択して実行すると、10秒くらいCPU全開になります)
そこで、JScriptで書き直してみたら速くなったので、そのソースを投稿してみます。
/***** ここからソース *****/
var CR = 0xd;
var LF = 0xa;
var oShell = new ActiveXObject("WScript.Shell");
var str,msg;
var c,prec=0;
var i;
var iSize = 0;
var i1Byte = 0;
var i2Byte = 0;
var iCRLF = 0;
var iCR = 0;
var iLF = 0;
str = Editor.GetSelectedString(0);
//選択文字のサイズ(半角1、全角2でカウント)、半角文字数、全角文字数、改行数をカウント
for(i = 0; i < str.length; ++i) {
c = str.charCodeAt(i);
//半角文字にあたるコードの場合、1バイトとしてカウント。
if ( (c >= 0x0 && c <= 0x7d) || (c == 0xf8f0) || (c >= 0xff61 && c <= 0xff9f) || (c >= 0xf8f1 && c < 0xf8f4)) {
//1Byte文字
iSize += 1;
//改行コード解析
if (c == CR) {
iCR += 1;
} else if (c == LF) {
//前の文字がCRだったら
if (prec == CR) {
iCR -= 1; //CR数を戻して
iCRLF += 1; //CRLF数をインクリメント
} else {
iLF += 1;
}
} else {
i1Byte += 1;
}
} else {
//2Byte文字
iSize += 2;
i2Byte += 1;
}
prec = c;//CRLF検査用に保存
//oShell.Popup("第" + i + "文字:" + c , 0 , "マクロ実行の確認",1);
}
//出力文字列作成
msg = "";
msg += "サイズ :" + iSize + "バイト\n";
msg += "半角文字:" + i1Byte + "文字\n" ;
msg += "全角文字:" + i2Byte + "文字\n" ;
//改行数は0の場合出さないようにしておく
if (iCR > 0) msg += "CR改行 :" + iCR + "文字\n" ;
if (iLF > 0) msg += "LF改行 :" + iLF + "文字\n" ;
if (iCRLF > 0) msg += "CRLF改行:" + iCRLF + "文字" ;
oShell.Popup(msg,0,"文字数カウント結果",0);
/***** ここまでソース *****/
ロジックはだいたい同じにしたつもりなんですけど、どこで速度に違いが出てるんでしょう?