みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
ファイルメーカー18 Win7を使っています。
年賀はがきを印刷するにあたり、住所録で困っています。
約5,000件ある住所録がありますが、住所1のフィールドに長い住所(12文字以上)が3,000件ほどあります。
年賀はがきのため、縦書き印刷する場合、長い住所は1行では収まりきらないため、2行に分ける必要があります。
(何文字以上は文字を小さくするということは考えていません。)
現状はフィールドの文字数が12文字以上は改行をしています。
しかし、住所1の文字数が13文字の場合、13文字目のみ改行されてしまうので見た目が悪いので、この場合は番地で改行しています。
そこで、希望としては、住所1が12文字以上の場合、番地の前で自動改行または、
住所の改行がおかしくない、丁度良いところ(例えば:東京都新宿区歌舞伎町1-1(改行)●●●●ビル3F)で自動改行してくれるのが良いのですが、そのような計算式はありますか。
色々とネットで探したのですが、このような投稿が非常に少なく、今回投稿させていただきました。
ご教授いただければ幸いです。
Offline
あらかじめ、都道府県、市区郡町村名、大字、字、丁目、番地 を区切ってあれば可能かもしれませんが、完全な自動処理は無理でしょう。
アイデアだけですが、
ある程度自動化するには、郵便番号データを使って、都道府県、市区郡町村名 は確実に区切ることができます。その次の大字、字までが区分として登録されていれば、そこまでは自動かできるかもしれません。それ以降は手で設定でしょうね。
区切り文字として、ゼロ幅空白を入れておけば、印刷時には無視されるはずです。それを改行に置き換えれば、適当な場所での改行になるでしょう。
外部のエンジンを使うのでしたら、形態素解析エンジン が有用でしょう。組み込んでみるといいかもしれません。
Last edited by Shin (2019-12-23 17:56:37)
Offline
正規表現を利用して住所を分割するサンプル。
※要プラグイン
フィールド設定 [結果;
Let([
_PS="$reg='(.{2,3}?[都道府県])((?:高市|静岡市|野々市|西村|西八代郡市|芳賀郡市|羽村|福岡市|神戸市|神崎郡市|相模原市|田村|熊本市|浜松市|武蔵村|横浜市|柴田郡村|杵島郡大町|東村|札幌市|新潟市|廿日市|広島市|川崎市|岡山市|大阪市|大町|大村|堺市|四日市|名古屋市中村|名古屋市|吉野郡下市|千葉市|十日町|北村|北九州市|余市郡余市|余市|佐波郡玉村|仙台市|京都市|中新川郡上市|さいたま市|.)?.*?[市区町村])(.*?)($|( | )(.*))';
$Result=[regex]::Matches( '{住所}',$reg);
$Result.Groups[1].Value;
$Result.Groups[2].Value;
$Result.Groups[3].Value;
$Result.Groups[6].Value;"
];
SMPS_Exe(
Substitute ( _PS ; "{住所}" ; 住所フィールド )
)
)
]
住所フィールドの値が「福井県大野市下郷8-3-5 マンション下郷第1 1308号室」の場合、
結果:
福井県
大野市
下郷8-3-5
マンション下郷第1 1308号室
※正規表現については、以下のモノを少し変更して使用しています。
住所を都道府県 / 市区町村 / 町域名に分ける正規表現 · GitHub
https://gist.github.com/zakuroishikuro/ … 93c4472109
プラグイン:ScriptMakerPS(FileMakerのフィールドに記述した「PowerShell」を実行し、戻り値を取得。)
https://sites.google.com/site/scriptmakerps/
Offline
Pages: 1
[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 554.48 KiB (Peak: 564.91 KiB) ]