Есть простой способ выбрасывание больших объемов данных из vb в Excel. Например такая функция
Sub ShowObraz(R1() As Byte, C1() As Byte, C2() As Byte)
Dim i As Long, n As Long: n = 8192
ReDim Obraz(1 To n + 1, 1 To 3)
Obraz1(1, 1) = "R1": Obraz1(1, 2) = "C1": Obraz1(1, 3) = "C2":
For i = 1 To n
Obraz1(i + 1, 1) = R1(i)
Obraz1(i + 1, 2) = C1(i)
Obraz1(i + 1, 3) = C2(i)
Next
Set xlApp = New Excel.Application: xlApp.Workbooks.Add: Application.WindowState = xlNormal
xlApp.Range("A1:С" + CStr(n + 1)) = Obraz: xlApp.Visible = True
End Sub
Ключевая здесь последняя строчка кода. Выделяется регион и в точности его размерам в него вкладывается массив Obraz. В этом коде важно то что он работает быстро, т.е. т.о. большие массивы данных отпечатываются в Excel-e мгновенно.
Теперь вопрос. Мне надо закрасить одним цветом различные не прямоугольные области листа в Excel-e. Этих областей много, они разбросаны по всему листу, по всем столбцам и по всем строкам. Как сделать нечто подобное приведенной выше процедуре чтобы сначала заполнить в vb некий массив и затем просто его шлепнуть в Excel без потерь времени. Ведь иначе, если выделять в Excel-e каждый раз небольшой участок строки и закрашивать его, а потом переходить к следующему участку - это занимает уйму времени.
Ответить
|