タグ: 郵便番号
- 作成者投稿
- 2018年7月26日 5:18 pm #24897musasabi参加者
・郵便番号と郵便番号に対応する住所(漢字)のデータを求めます。
・使用するデータは、日本郵便の郵便番号データダウンロードページより各自入手してください。
(例)
URL:https://www.post.japanpost.jp/zipcode/download.html
住所の郵便番号(CSV形式) => ・読み仮名データの促音・拗音を小書きで表記するもの
都道府県一覧 => 全国一括(1,687,197Byte)(2018年6月29日更新の場合)
ken_all.zip の中身のKEN_ALL.CSV (12,295,560バイト)・手順
KEN_ALL.CSVをEmEditorで開き、郵便番号データ変換マクロを実行
KEN_ALL.CSVと同じディレクトリにKEN_ALL_cnv.CSVファイルが作成される出力ファイルはUTF–8、改行コードは未変換です。
======================================
var startTime = new Date();
/*
□マクロ名:郵便番号データ変換.jsee
□バージョン:1.00
■開くファイル
郵便番号データダウンロードから取得した住所の郵便番号(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”);
Redraw = true;//ウィンドウの再描画:する
Quit();
======================================2019年5月27日 4:51 pm #28218musasabi参加者投稿方法を間違えたため、コードが誤変換されていましたので、再度投稿します。
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();
- 作成者投稿
- このトピックに返信するにはログインしてください。