郵便番号の更新

| コメント(1) | ブログ・トップ ▲
我が家の受注発送管理はぜんぶ、Excel  と Word の組み合わせで動かしている。

受注発送のデータ処理では、注文データ入力のときに送り先の郵便番号も記入するようにしてある。これは都道府県名、市郡区名、町村名まで入力すると、コンピュータが自動検索して郵便番号を表示する仕組みに作ってある。もちろん前もって、日本全国の郵便番号のデータベースをシステムに入れてある。だから、市町村合併などで毎年変化するデータベースをときどき更新しておかねばならない。

郵便番号データベースを受注管理システムに入れておくと、メリットが大きい。
たとえば、お客さんからもらった注文書に書いてある町名の字が読めないときや字が間違っているようなときでも、コンピュータがそれを修正補足してくれたりするのだ。たんに郵便番号を検索表示するだけに終わらない、有力な機能が付加される。Excel はけっこう賢いので、やめられない。

この郵便番号データベースは郵便会社のサイトからもらってくるのだが、なにしろサイズがデカイ。Excel ではそのままでは処理できないくらい大量のデータだ。全国をひとつの Excel ワークシートに収納することはできない。それで、ちょっとした工夫をしなければならない。

もう一点、郵便番号のなかには、北海道のように 0 から始まる地域がある。0 なんとかだったり、00 なんとかだったりする。これの処理だ。何も考えないでこのデータを Excel に入れると、アタマのゼロがぜんぶ消えた形になって、ほんらい7桁なければならないのが6桁や5桁になってしまう。これでは出荷伝票に印刷できない。

yubinbango.png第一段階:不要な列の削除。CSV形式をExcel (.xls) に変換保存。
第二段階:0 から始まる番号の処理。
第三段階:各地域ブロックごとにデータを結合させる。(北海道、東北、関東、中部、関西、中国、四国、九州)

このうちの第一と第二段階の処理コードを例として載せておく。(VisualBasic)

変換というボタンをクリックすると、不要な行を削除してから、特殊な地域のばあい郵便番号のアタマにゼロを補足して表示するようにファイルを変えるコード。


??????????????????
Private Sub Btn変換_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn変換.Click

        Dim myPath, myFile, myFile2 As String
        myPath = Application.StartupPath & "\"
        myFile = Cmb都道府県.Text & ".CSV"
        myFile2 = Cmb都道府県.Text & ".xls"

        '不要な行を削除するプログラム。

        Try
            xlApp = CreateObject("Excel.Application")
            xlBook = xlApp.Workbooks.Open(myPath & myFile)

        Catch
            MsgBox("対象のファイルがありません")
            Exit Sub

        End Try

        Try
            xlApp.Range("A1").Select()
            If xlApp.ActiveCell.Text = "" Then
            Else
                xlApp.Range("F1").Select()
                If xlApp.ActiveCell.Text = "" Then '削除済みファイル
                    MsgBox("すでに削除済みです")
                Else
                    RadioButton1.Checked = True

                    xlApp.Columns("J:O").Select()
                    xlApp.Selection.Delete(Shift:=Excel.XlDirection.xlToLeft)
                    xlApp.Columns("D:F").Select()
                    xlApp.Selection.Delete(Shift:=Excel.XlDirection.xlToLeft)
                    xlApp.Columns("A:B").Select()
                    xlApp.Selection.Delete(Shift:=Excel.XlDirection.xlToLeft)

                    MsgBox("削除しました")
                    RadioButton1.Checked = False
                End If
            End If
            xlApp.Range("A1").Activate()
            xlApp.ActiveCell.CurrentRegion.Select()
            xlApp.Selection.NumberFormat = "@" 'セルを文字列にする。アタマの0を表示するため。

        Catch
        End Try

        '0から始まる郵便番号を表示させるプログラム。北海道、東北の一部など。

        If Cmb都道府県.Text = "01HOKKAI" Or Cmb都道府県.Text = "02AOMORI" Or _
        Cmb都道府県.Text = "03IWATE" Or Cmb都道府県.Text = "05AKITA" Then

            Dim ans As Integer
            ans = MsgBox("ゼロ変換には少し時間がかかります。実行しますか?", _
                MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "アップル・メッセージ")

            If ans = MsgBoxResult.No Then
                xlApp.ActiveWorkbook.Close(SaveChanges:=False)
                xlApp.Quit()
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
                xlSheet = Nothing
                xlBook = Nothing
                xlApp = Nothing
                GC.Collect()
                Exit Sub

            Else
                RadioButton2.Checked = True
                xlApp.Range("A1").Activate()

                Do While xlApp.ActiveCell.Text <> ""

                    TextBox1.Text = xlApp.ActiveCell.Value
                    If TextBox1.TextLength <= 6 Then
                        If TextBox1.TextLength <= 5 Then
                            TextBox2.Text = "00" & TextBox1.Text
                        Else
                            TextBox2.Text = "0" & TextBox1.Text
                        End If
                    ElseIf TextBox1.TextLength = 7 Then
                        TextBox2.Text = TextBox1.Text

                    End If
                    xlApp.ActiveCell.Value = TextBox2.Text
                    TextBox1.Clear()
                    TextBox2.Clear()
                    xlApp.ActiveCell.Offset(1, 0).Activate()
                Loop

                xlApp.ActiveCell.Range("A1").Activate()
                'xlApp.ActiveCell.End(Excel.XlDirection.xlUp).Activate() 'データの最下端空白セル
                RadioButton2.Checked = False
                MsgBox("変換を完了しました")

            End If
        End If

        Try
            xlApp.ActiveWorkbook.SaveAs(Filename:=myPath & myFile2, Fileformat:=Excel.XlFileFormat.xlExcel9795)
            xlApp.ActiveWorkbook.Saved = True
            xlApp.ActiveWorkbook.Close()

        Catch
            'xlApp.AlertBeforeOverwriting = False ' 置き換え確認しない
            xlApp.ActiveWorkbook.Close(SaveChanges:=False)

        End Try

        xlApp.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
        xlSheet = Nothing
        xlBook = Nothing
        xlApp = Nothing
        GC.Collect()
End Sub

コメント(1)

日本郵便の郵便番号データを Excel 形式に変換するプログラムを以下に置きました。

0 から始まる郵便番号を含む地域(北海道、青森、岩手、秋田)でも 0 表示ができるように変換できます。

自己責任でご利用ください。

郵便番号ゼロ変換プログラムのダウンロード・ページ

コメントする

2024年2月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29    

月別 アーカイブ

Powered by Movable Type 8.0.2