Excel VBA | 中級・上級 VBA 総合セット(100問)

VBA
スポンサーリンク

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 → ログ追記
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました