VBA ファイル入出力 練習問題(10問)+ 解答解説
Excel VBA での ファイル入出力は、外部ファイル(テキスト・CSV・Excelブックなど)とのやり取りを行うための重要なスキルです。
ここでは代表的な 10問 を用意し、模範コードと解説を添えています。
Q1. テキストファイルを開き、内容をシートに書き込め
解答例
Sub ReadTextFile()
Dim fNum As Integer, line As String, row As Long
fNum = FreeFile
Open "C:\Users\Public\data.txt" For Input As #fNum
row = 1
Do Until EOF(fNum)
Line Input #fNum, line
Cells(row, 1).Value = line
row = row + 1
Loop
Close #fNum
End Sub
VB解説:Open ... For Input → 読み込み、Line Input → 1行ずつ取得。
Q2. テキストファイルにシートの内容を書き込め
解答例
Sub WriteTextFile()
Dim fNum As Integer, row As Long
fNum = FreeFile
Open "C:\Users\Public\output.txt" For Output As #fNum
For row = 1 To 10
Print #fNum, Cells(row, 1).Value
Next row
Close #fNum
End Sub
VB解説:Open ... For Output → 書き込み、Print # → 1行ずつ出力。
Q3. CSV ファイルを読み込み、配列に格納せよ
解答例
Sub ReadCSV()
Dim fNum As Integer, line As String, arr As Variant
fNum = FreeFile
Open "C:\Users\Public\data.csv" For Input As #fNum
Do Until EOF(fNum)
Line Input #fNum, line
arr = Split(line, ",")
Debug.Print arr(0), arr(1), arr(2)
Loop
Close #fNum
End Sub
VB解説:Split 関数でカンマ区切りを配列に変換。
Q4. CSV ファイルにシートのデータを書き込め
解答例
Sub WriteCSV()
Dim fNum As Integer, row As Long
fNum = FreeFile
Open "C:\Users\Public\export.csv" For Output As #fNum
For row = 1 To 10
Print #fNum, Cells(row, 1).Value & "," & Cells(row, 2).Value
Next row
Close #fNum
End Sub
VB解説:
セルの値をカンマで連結して出力。
Q5. フォルダ内の全 Excel ファイルを開き、指定セルの値を集計せよ
解答例
Sub AggregateFiles()
Dim fso As Object, folder As Object, file As Object
Dim wb As Workbook, total As Double
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Users\Public\ExcelData")
For Each file In folder.Files
If InStr(file.Name, ".xlsx") > 0 Then
Set wb = Workbooks.Open(file.Path)
total = total + wb.Sheets(1).Range("B2").Value
wb.Close False
End If
Next file
MsgBox "合計 = " & total
End Sub
VB解説:FileSystemObject を使ってフォルダ内のファイルを列挙。
Q6. ファイルを追記モードで開き、ログを書き込め
解答例
Sub AppendLog()
Dim fNum As Integer
fNum = FreeFile
Open "C:\Users\Public\log.txt" For Append As #fNum
Print #fNum, Now & " - 処理完了"
Close #fNum
End Sub
VB解説:For Append で既存ファイルの末尾に追記できる。
Q7. バイナリファイルを開き、内容を読み込め
解答例
Sub ReadBinary()
Dim fNum As Integer, buffer As String
fNum = FreeFile
Open "C:\Users\Public\data.bin" For Binary As #fNum
buffer = Input(LOF(fNum), fNum)
Close #fNum
Debug.Print buffer
End Sub
VB解説:For Binary でバイナリファイルを読み込む。LOF はファイルサイズ。
Q8. ファイル存在チェックを行え
解答例
Sub CheckFile()
If Dir("C:\Users\Public\data.txt") <> "" Then
MsgBox "ファイルは存在します"
Else
MsgBox "ファイルは存在しません"
End If
End Sub
VB解説:Dir 関数でファイルの存在を確認できる。
Q9. フォルダ内のファイル一覧をシートに出力せよ
解答例
Sub ListFiles()
Dim fName As String, row As Long
fName = Dir("C:\Users\Public\ExcelData\*.*")
row = 1
Do While fName <> ""
Cells(row, 1).Value = fName
row = row + 1
fName = Dir
Loop
End Sub
VB解説:Dir 関数を繰り返し呼び出すとフォルダ内のファイル一覧を取得できる。
Q10. ファイルをコピーしてバックアップを作成せよ
解答例
Sub BackupFile()
FileCopy "C:\Users\Public\data.xlsx", "C:\Users\Public\data_backup.xlsx"
End Sub
VB解説:FileCopy で簡単にファイルのコピーが可能。
✅ 総まとめ
- Open/Close → テキスト・CSV・バイナリファイルの入出力
- Print # / Line Input # → 書き込み・読み込み
- Dir / FileSystemObject → ファイル存在チェックや一覧取得
- FileCopy → バックアップ作成
- Append → ログ追記


