|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Заполняю Excel'овскую таблицу так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Но! Работает это очень-очень медлено. Над тысячей значений призадумывается несколько секунд. Откровенно говоря, очень медленно. Тормозит конструкция ExcelWsh.Cells(...) . Можно ли как-нибудь по-другому заполнять Excel'евский лист? Помогите, а то уже на ум приходит конструкция "сохранить все данные в текстовый файл, загрузить в Excel, а потом навести марафет" (все это программно, конечно) :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2004, 17:53 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
sraider Код: plaintext 1. 2. 3. 4.
Но! Работает это очень-очень медлено. Над тысячей значений призадумывается несколько секунд. Откровенно говоря, очень медленно. Тормозит конструкция ExcelWsh.Cells(...) . Можно ли как-нибудь по-другому заполнять Excel'евский лист? Быстрее только если не на VBA, а на макросах. В смысле Добавить лист-> Лист макросов MS Exel 4.0 И там переписать твою процедуру. Ну или комп проапгрейдить :-) Иначе никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2004, 18:06 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
DatsБыстрее только если не на VBA, а на макросах. В смысле Добавить лист-> Лист макросов MS Exel 4.0 И там переписать твою процедуру. Ну или комп проапгрейдить :-) Иначе никак. Ну может быть можно как-нибудь целыми диапазонами (Range) данные загружать?... Комп P4 2Ghz 256Mb :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2004, 18:15 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4.
Если оно в цикле извлекается, то из чего? Это я к тому, что Excel заполняет диапазон из массива одной строкой... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2004, 20:40 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
sraiderЗаполняю Excel'овскую таблицу так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Лучше создать сначала двумерный массив dim m2(1:999, 1:99) и запихнуть в него значения Затем - ExcelWsh.range(ExcelWsh.Cells(1, 1),ExcelWsh.Cells(999, 99)).Value = m2 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 10:01 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Processor Код: plaintext 1. 2. 3. 4.
Если оно в цикле извлекается, то из чего? Это я к тому, что Excel заполняет диапазон из массива одной строкой... Извлекается из полей базы данных (объекта Recordset). Тип значения как правило либо строка, либо число (с пл.точкой) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 14:36 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
MX-ALEXЛучше создать сначала двумерный массив dim m2(1:999, 1:99) и запихнуть в него значения Затем - ExcelWsh.range(ExcelWsh.Cells(1, 1),ExcelWsh.Cells(999, 99)).Value = m2 о! такая конструкций работает! попробую через нее... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 14:43 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
MX-ALEXЛучше создать сначала двумерный массив dim m2(1:999, 1:99) и запихнуть в него значения Затем - ExcelWsh.range(ExcelWsh.Cells(1, 1),ExcelWsh.Cells(999, 99)).Value = m2 Работает моментально!!! Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 14:50 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Если нужно взять на лист данные из рекордсета, то у Range есть прекрасный метод CopyFromRecordset. Рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 20:24 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Если нужно взять на лист данные из рекордсета, то у Range есть прекрасный метод CopyFromRecordset. Рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2004, 20:24 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
Либо исполльзовать QueryTables ... ' функция выгрузки диапазона данных на лист Excel Public Sub GetSQLData(stSQL As String, stBookName As String, stSheetName As String, stRangeName As String, stCellName As String, stQueryName As String) Dim RS As New ADODB.Recordset ' открытие запроса OpenConnection (Null) Set COM = New ADODB.Command COM.ActiveConnection = CON COM.CommandText = stSQL COM.CommandTimeout = 0 Set RS = COM.Execute ' добавление самого запроса Workbooks(stBookName).Sheets(stSheetName).Range(stRangeName).ClearContents With Workbooks(stBookName).Sheets(stSheetName).QueryTables.Add(RS, Sheets(stSheetName).Range(stCellName)) .Name = stQueryName .RefreshStyle = xlInsertEntireRows .BackgroundQuery = False .Refresh End With RS.Close End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2005, 21:37 |
|
Заполнение листа в Excel
|
|||
---|---|---|---|
#18+
sraiderИзвлекается из полей базы данных (объекта Recordset). Тип значения как правило либо строка, либо число (с пл.точкой) Fuzzyу Range есть прекрасный метод CopyFromRecordset. РекомендуюПрисоединяюсь к чёткой рекомендации Fuzzy ;-))) Уточняю только: этот метод работает с ADO Recordset, начиная с версии Excel 2000. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2005, 12:02 |
|
|
start [/forum/topic.php?fid=61&msg=32853903&tid=2186309]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 474ms |
0 / 0 |