• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel(VBA)で、レコード長の長いCSVファイル読み込み方法)

Excel(VBA)で、レコード長の長いCSVファイル読み込み方法

このQ&Aのポイント
  • Excel(VBA)を使用して、レコード長の長いCSVファイルの読み込み方法について教えてください。
  • VBAを使ってExcelでレコード長の長いCSVファイルを読み込みたい場合、どのような方法がありますか?可変データ数の多いCSVファイルを効率的に取り込む方法を教えてください。
  • Excel(VBA)を使って、可変データ数の多いCSVファイルを効率的に読み込む方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.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 ただし、実際問題は、そんなに大量のデータを読み込んでも誰も見ないでしょう。 まあ、勉強ということではありかも知れませんが・・・。

NewSQL
質問者

お礼

ありがとうございます。 早速、ためしに作成しました。 とてもよい勉強になりました。

その他の回答 (1)

noname#48759
noname#48759
回答No.1

[シートの最大列数以上のデータ]というのは列IVを超える列数ということでしょうか? でしたらEXCELで扱うことはできません。 シートを分ける等したほうが良いかと思います。

NewSQL
質問者

お礼

勉強として、色々試したくて、このような質問をしました。 確かに列が大量になる場合は、シートを分けた方がいいんですがね・・・ HUsky2007さんの回答で、こういう方法もあると知りました。 わざわざ、回答ありがとうございました。

関連するQ&A