投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/24 07:39:44
> 初級講座 >第30回 ファイル処理>■リスト6で
下記のことですね。まだ「郵政公社」だった当時のままなので、
csv のダウンロードリンクが違っていたりもしますが。
http://rucio.a.la9.jp/main/dotnet/shokyu/standard30.htm


> 郵便番号と住所をリストボックスに表示しますが、
郵便番号CSVは、複数行で 1 エントリとみなすレコード構成(例:409-1321)もあるので、
まともに扱おうとすると、単純に取り込めるものではなかったりします。

学習目的ではなく、実際にデータとしての利用を考えている場合には、
zipcloud さんあたりの加工済みデータの方が扱いやすいかもしれません。
http://d.hatena.ne.jp/dayflower/20100929/1285744153
https://qiita.com/nanasess/items/0f0aeaa1f72f599b9142


それはさておき。

> 1行目はItems(1,)
> 2行目はItems(2,)
Items(0, ) は未使用ということでしょうか。
それとも列名を格納するための物でしょうか。
ひとまず後者の意味で実装してみてました。
Private Items(,) As String
Private ReadOnly colNames() As String = "市町村CD,旧郵便番号,郵便番号,都道府県カナ,市区町村カナ,町域カナ,都道府県名,市区町村名,町域名,分割町域,小字起番,丁目含有,複数町域,更新区分,変更理由".Split(","c)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim filePath As String = "C:\19YAMANA.CSV"

    Dim q = (From line In System.IO.File.ReadLines(filePath, _
             System.Text.Encoding.GetEncoding("Shift_JIS"))
             Select line.Replace("""""").Split(","c)).ToArray()

    ReDim Items(q.Length, UBound(colNames))
    For colIdx = 0 To UBound(colNames)
        Items(0, colIdx) = colNames(colIdx)
    Next
    For rowNum = 1 To q.Length
        Dim cols() As String = q(rowNum - 1)
        For colIdx = 0 To UBound(colNames)
            Items(rowNum, colIdx) = cols(colIdx)
        Next
    Next
End Sub