+ YOSHIKI & Violet UK FAN SITE -Blind Tears- 管理人の日記 +

Blind Tears管理人こぅきの日記です☆彡
興味ある記事があればコメント・意見等お願いします☆

65536行を超えるCSVファイルをEXCELに取り込むVBA

2009年06月17日 20時08分02秒 | PC関連
仕事上のメモです。

EXCELの最大行数は65536であり、「外部データの取り込み」を使用しても65536行を超えるファイルは読み込むことができない。また読み込み開始行を取り込みウィザード内で指定できるが、1~32767行までしか指定できない。
これでは使いものにならないので、自作にてVBAを作成し、65536行以上のファイル(今回はCSVファイル)をシートへ可能な限り読み込むようにした。

下記は、そのソース。動作保障はしない。

------------------------------------------------------------------
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2009/6/17 ユーザー名 : k
'
'

Dim strInputFileName As String ' 入力ファイル名保管用
Dim iStartIndex As Long ' データ取り込み開始行保管用
Dim iNowIndex As Long ' 読み込み中の行
Dim iReadRows As Long ' 読み込み済みの行数
Dim strData ' 1行ごとのデータ

Set fs = CreateObject("Scripting.FileSystemObject")
strInputFileName = Application.GetOpenFilename("テキスト ファイル (*.txt;*.csv), *.txt;*.csv")
If strInputFileName = "False" Then
Exit Sub
End If

iStartIndex = Application.InputBox("取り込み開始行を入力してください", , 1, , , , , 1)


ActiveWorkbook.Worksheets.Add

' 全セル文字列に設定
Cells.Select
Selection.NumberFormatLocal = "@"


iNowIndex = 0
iReadRows = 0
Open strInputFileName For Input Access Read As #1
While Not EOF(1)

Line Input #1, strReadLine
iNowIndex = iNowIndex + 1
If iNowIndex >= iStartIndex Then

iReadRows = iReadRows + 1

strData = Split(strReadLine, ",")

ActiveSheet.Cells(iReadRows, 1).Resize(1, UBound(strData) + 1).Value = strData

If iReadRows >= 65536 Then
MsgBox ("Excelの読み込み可能最大行数65536を超えました。")
GoTo finally
End If

End If
Wend

finally:

' CSVを閉じる
Close #1
End Sub



最新の画像もっと見る

コメントを投稿