Pasting large arrays onto worksheet

Joined
Jul 9, 2012
Messages
24
Reaction score
0
Does anybody know if there is a limitation to the size of anarray in Excel 2010?

I am trying to get all files from a folder, read them into an array and paste teh contents back onto a worksheet.

I know for a fact the sum of all rows of data in the folder does NOT exceed 1 million rows (the limit in Excel 2010) but somehow the code hangs when the array is large, ie 70,000.

It hangs in this line:

Cells(1, 1).Resize(UBound(sArray, 1), 1) = Application.WorksheetFunction.Transpose(sArray)

with a run-time 13 type mismatch error message.

Thanks


Option Explicit

Sub Get_Files()

Dim sArray() As String
Dim Directory As String
Directory = "C:\Test\"
Dim fso As Scripting.FileSystemObject
Dim folder As Scripting.folder, file As Scripting.file

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(Directory)

For Each file In folder.Files

Call FileToArray(FileName:=file, TheArray:=sArray)

Cells(lrow + 1, 1).Resize(UBound(sArray, 1), 1) = Application.WorksheetFunction.Transpose(sArray)

Erase sArray

Next

End Sub

Public Sub FileToArray(ByVal FileName As String, ByRef TheArray As Variant)

Dim oFSO As New FileSystemObject
Dim oFSTR As Scripting.TextStream
Dim ret As Long
Dim lCtr As Long

If Dir(FileName) = "" Then Exit Sub

If VarType(TheArray) <> vbArray + vbString Then Exit Sub

On Error GoTo ErrorHandler

Set oFSTR = oFSO.OpenTextFile(FileName)

Do While Not oFSTR.AtEndOfStream

ReDim Preserve TheArray(lCtr) As String

TheArray(lCtr) = oFSTR.ReadLine
lCtr = lCtr + 1
DoEvents

Loop

oFSTR.Close

ErrorHandler:

Set oFSTR = Nothing

End Sub
 
Back
Top