>>827
普通に指定している行が多すぎるんじゃない?

Function Test(o As Range) As String()
Const BatchWidth = 100 '一度に処理する行数
Dim S() As String

With o
t = .Row
b = .Rows.Count
l = .Column
r = .Columns.Count
End With

ShiftC = r - l + 1
ReDim S(1 To b - t + 1, 1 To ShiftC)

For i = t To b Step BatchWidth
sc = i + BatchWidth - 1
If b < sc Then bw = b Else bw = sc
x = Range(o.Cells(i, 1), o.Cells(bw, ShiftC))
For pr = i To bw
For pc = 1 To ShiftC
S(pr, pc) = x(pr - i + 1, pc)
Next
Next
Next

Test = S
End Function

こんな感じでVariant型配列よりも容量の小さい配列に分割処理して入れ込んでみるとかで解決しないかな。