Страница: 1 |
Страница: 1 |
Вопрос: Как ускорить передачу данных в Ёксель из VB6???
Добавлено: 28.04.05 10:40
Автор вопроса: ddasoft | Web-сайт:
У меня в Ёкселе есть отчёт табличного вида, с кучей строк, который заполняется из ВБ. Использую я для этого такие комманды:
XLS.ActiveCell.Offset(r, c).Value = <"данные">
Где XLS - эт понятно определение Ёкселя,
потом с помощью FindCell(InitCell, SheetName) нахожу нужную ячейку для вставки последующих строк, и уже закидываю через ActiveCell.Offset(r, c).Value
НО! ... Тормозно оно както, несмотря на то что у меня Celeron 2,9 !!! ... приходиться ждать около 3-4 минуты до полного формирования отчёта, а эт дофига!!!
Есть есчё может какой-то метод заброски данных в Ёксель, более быстрый? может есть комманда заброски сразу целой строки через какой-то определённый разделитель ?
ХЕЛП! Очень нуна!
Заранее благодарен!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Александр GAG
Вопросов: 15
Ответов: 9
Web-сайт:
Профиль | | #1
Добавлено: 28.04.05 12:25
Делаю так.
Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
objExcel.Visible = True
objExcel.SheetsInNewWorkbook = 1
objExcel.Workbooks.Open ("C:\Kan\TAB.xls"
With objExcel.ActiveSheet
.Cells(1, 1).Value = ""
End With
objExcel.Quit
Set objExcel = Nothing
Номер ответа: 2
Автор ответа:
ddasoft
ICQ: 209194603
Вопросов: 12
Ответов: 27
Web-сайт:
Профиль | | #2
Добавлено: 28.04.05 12:35
Ну так я так-же клепал, только искользовал ActiveCell.Offset ... но этот метод довольно долгий ...
Есть может какой-то разделитель ячеек, чтоб зделать как-бы так:
XLS.ActiveCell.Offset(r, c).Value = "1" & <разделитель> & "2" & <разделитель> & "3" & <разделитель> & "4" ... и т. д. ... ????
Как бы одной коммандой запулить туда сразу несколько колонок последовательно ...
Вот есть такое иль нет ? Кто знает ..
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 28.04.05 13:25
Есть такое.
Принцип:
где v - переменная типа variant, содержащая массив значений.
Номер ответа: 4
Автор ответа:
ddasoft
ICQ: 209194603
Вопросов: 12
Ответов: 27
Web-сайт:
Профиль | | #4
Добавлено: 28.04.05 13:52
Но при использовании .range("a1:a10".value=v
Все значения будут одинаковы ... а мне нуна разные (свои) значения ...
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 28.04.05 17:27
Я же говорю, v - это variant, содержащий массив.
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 28.04.05 17:43
Так попробуй.
Dim A As Variant
A = Split("Elm1,Elm2,Elm3",","
.range("a1:a10".value=A
Номер ответа: 7
Автор ответа:
ddasoft
ICQ: 209194603
Вопросов: 12
Ответов: 27
Web-сайт:
Профиль | | #7
Добавлено: 29.04.05 10:08
а можно как-то в строке range(...) вместо этих буквочек а,b,c ... указать номер колонки ?
т.е. как-бы так: range("01,01:22,01" ??
Номер ответа: 8
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #8
Добавлено: 29.04.05 12:37