仕事上のメモです。
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
| Trackback ( 0 )
|