- ベストアンサー
Excel(VBA)で、レコード長の長いCSVファイル読み込み方法
- Excel(VBA)を使用して、レコード長の長いCSVファイルの読み込み方法について教えてください。
- VBAを使ってExcelでレコード長の長いCSVファイルを読み込みたい場合、どのような方法がありますか?可変データ数の多いCSVファイルを効率的に取り込む方法を教えてください。
- Excel(VBA)を使って、可変データ数の多いCSVファイルを効率的に読み込む方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1,aaa 2,bbb,ccc 3,ddd,eee,fff 今、このような CSV ファイルがあるとします。 これを1行づつ読み込むサンプルコードは次のようです。 問題は、Mの値によってシートを切り替えるなりすることでしょう。 Private Sub CommandButton1_Click() Dim I As Integer Dim J As Integer Dim N As Integer Dim M As Integer Dim Data As String Dim Datas() As String Do M = M + 1 ' エクセルの行カウンターをカウントアップ Data = FileRead("C:\Temp\Test.csv") ' 1行だけ読み込む Datas() = Split(Data, ",") ' 読み込んだデータを列に対応する配列に代入 N = UBound(Datas()) + 1 ' 列インデックスの最大値+1 を求める For I = 1 To N ' For ループ J = I - 1 ' 配列インデックス Me.Cells(M, I) = Datas(J) ' エクセルに表示 Next I ' Next I Loop Until Data = "" End Sub ※[ツール][参照設定] で Microsoft Scripting Runtime にレ点が必要。 Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String On Error GoTo Err_FileRead Static isOpen As Boolean Static fso As FileSystemObject Static fil As File Static txs As TextStream If Not isOpen Then isOpen = True Set fso = New FileSystemObject Set fil = fso.GetFile(FileName) Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault) End If FileRead = txs.ReadLine Exit_FileRead: If Len(FileRead) = 0 Or isStop Then isOpen = False Set txs = Nothing Set fil = Nothing Set fso = Nothing End If Exit Function Err_FileRead: Resume Exit_FileRead End Function ただし、実際問題は、そんなに大量のデータを読み込んでも誰も見ないでしょう。 まあ、勉強ということではありかも知れませんが・・・。
その他の回答 (1)
[シートの最大列数以上のデータ]というのは列IVを超える列数ということでしょうか? でしたらEXCELで扱うことはできません。 シートを分ける等したほうが良いかと思います。
お礼
勉強として、色々試したくて、このような質問をしました。 確かに列が大量になる場合は、シートを分けた方がいいんですがね・・・ HUsky2007さんの回答で、こういう方法もあると知りました。 わざわざ、回答ありがとうございました。
お礼
ありがとうございます。 早速、ためしに作成しました。 とてもよい勉強になりました。