ExcelVBAでCRLF,UTF-8のTSVファイルを読み込みたいということがあったのでメモです。
UTF-8の場合は、ADODBを使う必要があるそうです。
実行環境
バージョン 2002 (ビルド 12527.20278 クイック実行)
ソースコード
ファイルパスは、「ボタン1」を設置したシートの「C6」セルに入力させることを想定しています。
Option Explicit ' UTF-8,CRLFのTSVを読み込んで別シートのセルに値を入力する Sub ボタン1_Click() Dim currentBook As Workbook Dim filePath As String Dim newBook As Workbook Dim i As Long Dim j As Long Dim adodb As Object Dim line As String Dim splittedLine() As String Set currentBook = ActiveWorkbook filePath = currentBook.Worksheets("sheet1").Range("C6").Value Debug.Print filePath If filePath = "" Then MsgBox "ファイルパスを入力してください" Exit Sub End If ' 転記用新規ExcelBookを開く Set newBook = Workbooks.Add newBook.Activate 'ADODB.Streamオブジェクトを生成 Set adodb = CreateObject("ADODB.Stream") i = 1 With adodb .Charset = "UTF-8" 'Streamで扱う文字コードをUTF-8に設定 .Open .LoadFromFile (filePath) Do Until .EOS line = .Readtext(-2) '"-2"は1行ずつ読み込みの定数 splittedLine = Split(line, vbTab) '行をタブで区切って配列化 For j = 0 To UBound(splittedLine) newBook.Worksheets(1).Cells(i, j + 1).Value = splittedLine(j) Next j i = i + 1 Loop .Close End With Set adodb = Nothing Set newBook = Nothing Set currentBook = Nothing End Sub