CSVファイルを読む
Step7

CSVファイルを読む(中級レベル)

実行ファイルとデータファイルを分けることでプログラミングの幅が広がります。

1. CSVファイル

データをカンマ(,)で区切って並べたテキストファイル
📌Comma Separated Values

101,Suzuki,85
102,Tanaka,90
103,Sato,78
🚀 CSVの特徴
  • 拡張子は .csv
  • Excelでそのまま開くことができ、VBAと相性がよい。
  • 中身は文字、メモ帳で確認・編集できる。
2. FreeFile関数

📦 まずはファイルを「開く」流れを知ろう

CSVファイルを読むときは、次の順番で処理します。

🔸ファイルを開く(Open)
        ↓
🔸データを読む
        ↓
🔸ファイルを閉じる(Close)

イメージとしては、本を読むときと同じです。

🔸本を開く
      ↓
🔸読む
      ↓
🔸本を閉じる

📦 Open文ではファイル番号が必要

ファイルを開くときは、次のように書きます。

Open "data.csv" For Input As #1
    '読み込み処理
Close #1

#1 がファイル番号(File Number)です。
VBAはこの番号を使って「どのファイルを開いているのか」を管理します。
でも、番号を自分で決めるのは危険

⭐そこで FreeFile の出番

Dim fileNum As Integer
fileNum = FreeFile
Open "data.csv" For Input As #fileNum
    '読み込み処理
Close fileNum

まだ使われていないファイル番号(File Number)を教えてくれる関数です。
番号の重複を気にせず、安全にファイルを開けます。

3. CSVファイルのパス(Path)

📦 CSVファイルの場所を指定する

CSVファイルを開くには、「どこにCSVファイルがあるのか」をVBAに教える必要があります。

'絶対パス
    filePath = "C:\sample\data.csv"

'相対パス
    filePath = ThisWorkbook.Path & "\data.csv"

ThisWorkbook.Path は、処理を実行しているファイルが保存されているフォルダを表します。

4. サンプルコード
Dim filePath As String
Dim fileNum As Integer
Dim line As String
Dim item() As String
Dim i As Integer

filePath = ThisWorkbook.Path & "\data.csv"
fileNum = FreeFile

    Open filePath For Input As #fileNum

    Do Until EOF(fileNum)         'ファイルの最後(EOF)まで読む
        Line Input #fileNum, line '1行分読む
        item = Split(line, ",")   'カンマで区切って配列へ代入

        For i = 0 To UBound(item)
             Debug.Print "Item(" & i & ") : " & item(i)
        Next i

        Debug.Print "--------------"
    Loop

    Close #fileNum
🚀 「ダウンロード教材」による出力例
Item(0) : 85
Item(1) : 69
Item(2) : 78
--------------
Item(0) : 90
Item(1) : 81
Item(2) : 99
--------------
Item(0) : 78
Item(1) : 82
Item(2) : 100
--------------

📘 ダウンロード教材について

この教材は、全国商業高等学校協会の情報処理検定の過去問題をもとに作成された、
学習支援用のマクロ付きExcelファイルです。

  • マクロは 売上集計や平均点の計算など、検定形式に沿った処理を行います。
  • 外部との通信やファイル操作は一切行いません。
  • 教育目的で無償提供しており、改変・再配布はご遠慮ください。

ご利用の際は、マクロを有効にする必要があります。学校のPCで使用する場合は、先生にご確認ください。

ファイル名 サイズ (KB) ダウンロード
CSVFile_SampleCode.zip 11

戻る


© 2026 - Blazor 情処の味方

サポーターズ
Thread Light
An unhandled error has occurred. Reload 🗙