我が家の受注発送管理はぜんぶ、Excel と Word の組み合わせで動かしている。
受注発送のデータ処理では、注文データ入力のときに送り先の郵便番号も記入するようにしてある。これは都道府県名、市郡区名、町村名まで入力すると、コンピュータが自動検索して郵便番号を表示する仕組みに作ってある。もちろん前もって、日本全国の郵便番号のデータベースをシステムに入れてある。だから、市町村合併などで毎年変化するデータベースをときどき更新しておかねばならない。
郵便番号データベースを受注管理システムに入れておくと、メリットが大きい。
たとえば、お客さんからもらった注文書に書いてある町名の字が読めないときや字が間違っているようなときでも、コンピュータがそれを修正補足してくれたりするのだ。たんに郵便番号を検索表示するだけに終わらない、有力な機能が付加される。Excel はけっこう賢いので、やめられない。
受注発送のデータ処理では、注文データ入力のときに送り先の郵便番号も記入するようにしてある。これは都道府県名、市郡区名、町村名まで入力すると、コンピュータが自動検索して郵便番号を表示する仕組みに作ってある。もちろん前もって、日本全国の郵便番号のデータベースをシステムに入れてある。だから、市町村合併などで毎年変化するデータベースをときどき更新しておかねばならない。
郵便番号データベースを受注管理システムに入れておくと、メリットが大きい。
たとえば、お客さんからもらった注文書に書いてある町名の字が読めないときや字が間違っているようなときでも、コンピュータがそれを修正補足してくれたりするのだ。たんに郵便番号を検索表示するだけに終わらない、有力な機能が付加される。Excel はけっこう賢いので、やめられない。
この郵便番号データベースは郵便会社のサイトからもらってくるのだが、なにしろサイズがデカイ。Excel
ではそのままでは処理できないくらい大量のデータだ。全国をひとつの Excel
ワークシートに収納することはできない。それで、ちょっとした工夫をしなければならない。
もう一点、郵便番号のなかには、北海道のように 0 から始まる地域がある。0 なんとかだったり、00 なんとかだったりする。これの処理だ。何も考えないでこのデータを Excel に入れると、アタマのゼロがぜんぶ消えた形になって、ほんらい7桁なければならないのが6桁や5桁になってしまう。これでは出荷伝票に印刷できない。
第一段階:不要な列の削除。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
もう一点、郵便番号のなかには、北海道のように 0 から始まる地域がある。0 なんとかだったり、00 なんとかだったりする。これの処理だ。何も考えないでこのデータを Excel に入れると、アタマのゼロがぜんぶ消えた形になって、ほんらい7桁なければならないのが6桁や5桁になってしまう。これでは出荷伝票に印刷できない。
第一段階:不要な列の削除。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
日本郵便の郵便番号データを Excel 形式に変換するプログラムを以下に置きました。
0 から始まる郵便番号を含む地域(北海道、青森、岩手、秋田)でも 0 表示ができるように変換できます。
自己責任でご利用ください。
郵便番号ゼロ変換プログラムのダウンロード・ページ