#28218
musasabi
参加者

投稿方法を間違えたため、コードが誤変換されていましたので、再度投稿します。


var startTime = new Date();
/*
□マクロ名:郵便番号データ変換.jsee
□バージョン:1.10
■開くファイル
 郵便番号データダウンロードから取得した住所の郵便番号(CSV形式)
 http://www.post.japanpost.jp/zipcode/download.html
■作成ファイル
 9.町域名の内容を簡略化したファイル(ファイル名=拡張子の前に"_cnv"を追加)
■手順(例)
 KEN_ALL.CSVを開く
 郵便番号データ変換.jseeを実行
 同一ディレクトリに変換後のファイル(UTF-8)が作成される
*/

Redraw = false;//ウィンドウの再描画:しない

document.CellMode = false;//CSV セル選択モード解除

columnN = document.GetColumns();//CSV モードで列の数を取得
if(columnN != 15){
	alert( "列数エラー。列数は、" + columnN + "です。" );
	Quit();
}

//■使用しない列を削除
document.selection.StartOfDocument()//カーソル位置を文頭へ移動
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(4490);//郵便番号(7桁)
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(4490);//都道府県名
editor.ExecuteCommandByID(4490);//市区町村名
editor.ExecuteCommandByID(4490);//町域名
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1
editor.ExecuteCommandByID(3962);//列の削除 1

//■保存するファイル名を設定
strPath = document.Path;//文書のパスを取得
aName = document.Name.split(".");//文書のファイル名を取得
sCnvPath_Name = strPath + "\\" + aName[0] + "_cnv." + aName[1];

//■UTF8で一旦保存
document.Encoding = eeEncodingUTF8;//保存時のエンコード:UTF-8
document.UnicodeSignature = false;//保存時に(BOM)を付けない
document.Save( sCnvPath_Name );//文書を保存
document.close();//文書を閉じる
editor.ExecuteCommandByID(4583);//最も最近閉じたファイルを開く
document.CellMode = false;//CSV セル選択モード解除

//■町域の複数行に渡るかっこ書きを削除
//郵便番号の列を取得
document.selection.SetActivePoint( eePosCellLogical, 1, 1 );
editor.ExecuteCommandByID(4461);
sTmp = "\r\n" + document.selection.Text;
aPostalCode = new Array();
aPostalCode = sTmp.split("\r\n");

//町域の列を取得
document.selection.SetActivePoint( eePosCellLogical, 4, 1 );
editor.ExecuteCommandByID(4461);
sTmp = "\r\n" + document.selection.Text;
aTyou = new Array();
aTyou = sTmp.split("\r\n");
sTmp = null;

//最終行から開始行へ向かって処理を行う
fOkikae = false;//フラグ置き換えモード:終わり
re1 = new RegExp("^\"[^(]*)\"$");//")"のみを検索
re2 = new RegExp("(^\".*)([^)]*(\")$");//"("のみを検索
for(i = aTyou.length - 2; i >= 1; i--){
	if( ( aPostalCode[i] == aPostalCode[i-1] ) || ( fOkikae == 1)){//郵便番号が同じor置き換えモードの場合
		document.selection.SetActivePoint( eePosCellLogical, 4, i );
		if( fOkikae ){
			if(aTyou[i].match(re2)){//"("のみを検索
				document.SetCell( i , 4, RegExp.$1 + RegExp.$2, eeDontQuote );
				fOkikae = false;//フラグ置き換えモード:終わり
			}else{
				document.selection.SelectLine();
				document.selection.Delete(1);//行削除
			}
		} else {
			if(aTyou[i].match(re1)){//")"のみを検索
				document.selection.SelectLine();
				document.selection.Delete(1);//行削除
				fOkikae = true;//フラグ置き換えモード:開始
			}
		}
	}
}

//■町域の文字列を置き換え
document.selection.SetActivePoint( eePosCellLogical, 4, 1 );//カーソル位置を設定
editor.ExecuteCommandByID(4461);//列を選択
document.selection.Replace("以下に掲載がない場合","",eeFindReplaceSelOnly | eeReplaceAll,0);
document.selection.Replace("(\".*)((その他|丁目|番地|次のビルを除く|地階・階層不明|.*[、~].*|.*以上|.*以下))(\")","\\1\\3",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
//★名駅ミッドランドスクエア(高層棟)(地階・階層不明)
document.selection.Replace("(\".*)(高層棟)(.*\")","\\1\\2",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
//★三田市の次に番地がくる場合
document.selection.Replace("\".*の次に番地がくる場合\"","\"\"",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
//★土樋(1丁目「11を除く」) => 土樋(1丁目)
//★切畑(長尾山「その他」) => 切畑(長尾山)
document.selection.Replace("(\".*(.*)「(.*を除く|その他)」()\")","\\1\\3",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
//★音江町(国見その他) => 音江町(国見)
document.selection.Replace("(\".*(.*)その他()\")","\\1\\2",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);
//★花田町官有地(無番地を除く)
//★芦田町福田(376-10を除く)
//★津島町下畑地(乙を除く)
document.selection.Replace("(\".*)(.*を除く)(\")","\\1\\2",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);

//■町域のかっこ"("および")"を削除
document.selection.Replace("(\".*)((.*))(\")","\\1\\2\\3",eeFindReplaceSelOnly | eeReplaceAll | eeFindReplaceRegExp,0);

editor.ExecuteCommandByID(4099);//ファイルを上書き保存
document.close();//文書を閉じる
var endTime = new Date();
//alert((endTime – startTime)/1000 + "sec");
//alert(endTime - startTime + "ms");
alert((endTime - startTime)/1000 + "sec");
Redraw = true;//ウィンドウの再描画:する
Quit();