カテゴリ: VB.NET 更新日: 2026/03/09

VB.NETでCSVファイルを読み書き!初心者でもわかる操作方法を完全解説

VB.NETでCSVファイルを扱う方法と基本コード
VB.NETでCSVファイルを扱う方法と基本コード

先生と生徒の会話形式で理解しよう

生徒

「先生、エクセルで使うようなデータを自分のプログラムで読み込んだり、保存したりしたいのですが、何か良い方法はありますか?」

先生

「それなら、CSVファイルという形式を扱うのが一番おすすめですよ。VB.NETを使えば、とても簡単にCSVの読み書きができます。」

生徒

「CSVって聞いたことはありますが、難しそうですね。プログラミングが初めての私でもできますか?」

先生

「大丈夫ですよ!CSVはただのテキストデータですから、基本さえ覚えれば誰でも扱えます。具体的な手順を一緒に見ていきましょう!」

1. CSVファイルとは何かを知ろう

1. CSVファイルとは何かを知ろう
1. CSVファイルとは何かを知ろう

CSV(シーエスブイ)とは、「Comma Separated Values」の略で、日本語に直すと「カンマで区切られた値」という意味になります。名前の通り、データとデータの間を「,(カンマ)」で区切って並べた非常にシンプルなファイル形式です。

例えば、名簿データであれば「名前,年齢,出身地」のように一行にまとめられます。この形式の最大の特徴は、メモ帳などのテキストエディタで中身が見られるだけでなく、Excel(エクセル)などの表計算ソフトでも開ける点にあります。特定のソフトに依存しないため、プログラムでデータを扱う際に最もよく使われる形式の一つです。初心者の方は、まずは「カンマで区切られただけの単純なテキストデータ」だと考えておけば問題ありません。

2. CSVファイルを一行ずつ読み込む基本コード

2. CSVファイルを一行ずつ読み込む基本コード
2. CSVファイルを一行ずつ読み込む基本コード

まずは、すでにあるCSVファイルをプログラムで読み込む方法を学びましょう。VB.NETでは TextFieldParser(テキストフィールドパーサー)という便利な道具を使うのが一般的です。これは、カンマ区切りのデータを自動的にバラバラにしてくれる優れた機能を持っています。

以下のコードは、ファイルから一行ずつデータを取り出し、画面に表示する最も基本的な形です。ファイルを扱う際は、まず「ファイルを開く」、次に「中身を読む」、最後に「ファイルを閉じる」という三つのステップがあることを意識してください。プログラミングの世界では、使い終わったファイルを片付けることは非常に大切なマナーです。


' ファイルを読み込むための準備
Using reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\test\sample.csv")
    ' カンマ区切りであることを指定
    reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
    reader.SetDelimiters(",")

    ' ファイルの最後まで繰り返す
    While Not reader.EndOfData
        ' 一行分を読み込んで配列にする
        Dim fields As String() = reader.ReadFields()
        
        ' 読み込んだ内容を順番に表示
        For Each item In fields
            Console.Write(item & " ")
        Next
        Console.WriteLine()
    End While
End Using

3. CSVファイルにデータを書き込む方法

3. CSVファイルにデータを書き込む方法
3. CSVファイルにデータを書き込む方法

次に、プログラムで作ったデータをCSVファイルとして保存(書き込み)してみましょう。書き込みには StreamWriter(ストリームライター)という道具を使います。これは、文字をファイルに書き出すための「ペン」のような役割を果たします。

書き込む際のコツは、データとデータの間に自分でカンマ "," を入れることです。また、一行書き終わるごとに改行を入れることで、正しいCSV形式になります。ファイルが存在しない場合は自動的に新しく作られ、すでにある場合は上書きされます。保存する場所(パス)を間違えるとエラーになるので、あらかじめフォルダが存在するか確認しておきましょう。


' 書き込み用のペンを用意する
Dim filePath As String = "C:\test\output.csv"
Using writer As New System.IO.StreamWriter(filePath, False, System.Text.Encoding.UTF8)
    ' データを一行分用意して書き込む
    Dim line1 As String = "田中太郎" & "," & "25" & "," & "東京都"
    writer.WriteLine(line1)
    
    ' 二行目も同じように書き込む
    Dim line2 As String = "佐藤花子" & "," & "30" & "," & "大阪府"
    writer.WriteLine(line2)
End Using

Console.WriteLine("ファイルの保存が完了しました")

4. 文字化けを防ぐエンコーディングの知識

4. 文字化けを防ぐエンコーディングの知識
4. 文字化けを防ぐエンコーディングの知識

CSVを扱う上で、初心者が必ずと言っていいほど直面する問題が「文字化け」です。文字化けとは、保存した文字が変な記号になってしまう現象のことです。これは、パソコンが文字を数値として扱う際の「通訳のルール(エンコーディング)」が食い違っているために起こります。

日本では古くから「Shift-JIS(シフトジス)」というルールが使われてきましたが、現在は世界共通の「UTF-8(ユーティーエフエイト)」が主流です。ExcelでCSVを開く場合は、あえて古い「Shift-JIS」で保存しないと文字化けすることがあります。VB.NETで指定する場合は System.Text.Encoding.GetEncoding("Shift_JIS") のように記述します。自分が作ったファイルをどこで開くかに合わせて、このルールを使い分けることが大切です。

5. 特定の項目だけを取り出して計算に使う

5. 特定の項目だけを取り出して計算に使う
5. 特定の項目だけを取り出して計算に使う

CSVの真価は、読み込んだデータを計算や判定に使える点にあります。例えば、家計簿のCSVから「金額」の部分だけを取り出して合計を出すといった処理です。ReadFields で読み込んだデータは「配列(はいれつ)」という仕切りのある箱に入っています。

配列の番号は 0 番から始まることに注意してください。例えば、1番目の項目が名前、2番目が点数なら、点数を取り出すには (1) を指定します。以下のコードでは、特定の項目を取り出して、それを数値として計算に使う流れを確認しましょう。単なる表示だけでなく、情報を抜き出して活用できるようになると、プログラミングがぐっと面白くなります。


Dim totalScore As Integer = 0
Using reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\test\scores.csv")
    reader.SetDelimiters(",")
    
    While Not reader.EndOfData
        Dim data As String() = reader.ReadFields()
        ' 2列目(番号1)のデータを数値に変えて足す
        Dim score As Integer = Integer.Parse(data(1))
        totalScore += score
    End While
End Using

Console.WriteLine("合計点数は " & totalScore & " 点です")

6. エラーからプログラムを守る例外処理

6. エラーからプログラムを守る例外処理
6. エラーからプログラムを守る例外処理

ファイルを扱うプログラムには、常にトラブルの可能性があります。「指定したファイルが見つからない」「別のソフトがそのファイルを開いていて使えない」「書き込もうとしたら容量がいっぱいだった」などです。これらの問題が起きると、プログラムは突然止まってしまいます。

これを防ぐために Try...Catch(トライ・キャッチ)という仕組みを使います。これは「もし失敗したら、この処理をしてね」という予約のようなものです。これにより、エラーが起きてもプログラムを安全に終了させたり、ユーザーにメッセージを表示したりできます。初心者のうちから「もしも」の事態に備える癖をつけておくことは、信頼されるプログラマーへの第一歩です。


Try
    ' エラーが起きるかもしれない処理
    Dim text As String = System.IO.File.ReadAllText("C:\non_existent.csv")
Catch ex As System.IO.FileNotFoundException
    ' ファイルがなかったときの対応
    Console.WriteLine("エラー:ファイルが見つかりませんでした。")
Catch ex As Exception
    ' その他のエラーが起きたときの対応
    Console.WriteLine("予期せぬ問題が発生しました:" & ex.Message)
End Try

7. カンマを含むデータへの対応方法

7. カンマを含むデータへの対応方法
7. カンマを含むデータへの対応方法

少し応用的な内容ですが、CSVデータの中に「住所の中にカンマが含まれている」ような場合、単純な区切り方だとデータがズレてしまいます。これを防ぐために、CSVではデータを " "(ダブルクォーテーション)で囲むというルールがあります。

自分でこの複雑な処理を書くのは大変ですが、最初の方で紹介した TextFieldParser は、この「囲み文字」を自動的に認識して正しく処理してくれます。このように、VB.NETに用意されている便利な機能を正しく選ぶことで、複雑な問題も簡単に解決できます。データの形が少し変わっても慌てず、適切な道具を使うことが開発のコツです。

8. 複数のデータを一括で読み込むリストの活用

8. 複数のデータを一括で読み込むリストの活用
8. 複数のデータを一括で読み込むリストの活用

読み込んだデータをプログラムの中でずっと保持しておきたいときは、List(リスト)という動く箱を使います。配列と違って、後から中身の数を増やしたり減らしたりできるのが特徴です。

CSVの全データを一度リストに入れてしまえば、後から「並び替える」「特定の単語を検索する」といった高度な操作が自由自在になります。ファイル操作とリストの組み合わせは、業務システムなどで最もよく使われる王道のパターンです。大きなデータを扱う際は、この方法を思い出すようにしてください。

9. CSV操作をマスターするための練習ステップ

9. CSV操作をマスターするための練習ステップ
9. CSV操作をマスターするための練習ステップ

ここまで学んだことを定着させるには、実際に手を動かすのが一番です。まずは、自分のパソコンのCドライブなどに簡単なCSVファイルを作り、それを読み込むだけのプログラムを作ってみましょう。次に、読み込んだ文字に「さん」を付けて別のファイルに保存する、といった小さな改造を加えてみてください。

プログラムは、一度に全てを完成させる必要はありません。一行ずつ、一機能ずつ確認しながら進めることが大切です。VB.NETは画面の指示も分かりやすく、初心者にとって優しい言語です。CSV操作をマスターすれば、世の中にある膨大なデータを自由に操れるようになります。ぜひ自信を持って挑戦し続けてください!

関連記事:
カテゴリの一覧へ
新着記事
New1
ASP.NET
IISにASP.NETアプリをデプロイする基本手順を完全ガイド!初心者でもわかる公開方法
New2
VB.NET
VB.NETのFor Eachループを完全マスター!初心者でもわかるコレクション処理の基本
New3
ASP.NET
ASP.NETアプリのデプロイ手順の全体像!初心者でもわかるIIS・Docker・Azure App Service
New4
ASP.NET
ASP.NET MVCでJSONデータを返すAPIの作り方!初心者でもわかるデータ通信入門
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETの入出力の基本!初心者でもわかるConsole.WriteLine()とConsole.ReadLine()の使い方
No.2
Java&Spring記事人気No2
VB.NET
VB.NETでテキストファイルに書き込む方法を完全解説!WriteAllTextとAppendAllText
No.3
Java&Spring記事人気No3
VB.NET
VB.NETでStaticメソッドを定義する方法と活用例
No.4
Java&Spring記事人気No4
VB.NET
VB.NETでの変数名の付け方とは?わかりやすくエラーの起きにくい命名規則を紹介
No.5
Java&Spring記事人気No5
VB.NET
VB.NETプログラムの実行方法まとめ!Visual Studio・コマンドラインの使い方
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.7
Java&Spring記事人気No7
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETのDictionaryを完全ガイド!初心者でもわかる辞書の基本と応用