|
Проблема с завершением процесса Excel
|
|||
---|---|---|---|
#18+
Добрый день! Есть проблема с завершением процесса Excel после считывания данных с листа из Access. Перечитал кучу форумов наших и не наших, но решения так и не нашлось. Что бы я ни делал ничего не помогает. Привожу пример кода, может у кого-то появятся свежие идеи: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 09:53 |
|
Проблема с завершением процесса Excel
|
|||
---|---|---|---|
#18+
mr. ShuOTT = oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30)) Что будет с процессом, если эту строку закомментировать? А так? OTT = oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30)) .Value ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 11:06 |
|
Проблема с завершением процесса Excel
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Ваше исправление кода решило проблему. Теперь все работает корректно. Спасибо огромное за помощь! Только не могу понять в чем разница, т.к. моим способом данные тоже загружались в память. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 11:46 |
|
Проблема с завершением процесса Excel
|
|||
---|---|---|---|
#18+
mr. ShuТолько не могу понять в чем разница, т.к. моим способом данные тоже загружались в память. Давайте порассуждаем... Обращение к oWS.Range(oWS.Cells(1, 1), oWS.Cells(500, 30)) - это неявное создание трех объектов Range. Если написать Set OTT = oWS.Range(...), то в OTT вы получите объект Range, которому после использования надо тоже делать Nothing. Если OTT = oWS.Range(...).Value, то Range возвращает массив значений, считает миссию выполненной и благополучно рассасывается. А в вашем варианте Range использует значение по умолчанию (Value), но остается в памяти, ожидая других обращений к себе. Кстати, у вас действительно 500 строк и 30 столбцов? Может проще использовать конструкцию OTT = oWS.UsedRange.Value ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 13:34 |
|
Проблема с завершением процесса Excel
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Если OTT = oWS.Range(...).Value, то Range возвращает массив значений, считает миссию выполненной и благополучно рассасывается. А в вашем варианте Range использует значение по умолчанию (Value), но остается в памяти, ожидая других обращений к себе. Спасибо. Теперь разобрался Анатолий ( Киев )Кстати, у вас действительно 500 строк и 30 столбцов? Может проще использовать конструкцию OTT = oWS.UsedRange.Value ? Скажем, с UsedRange массив не сильно уменьшится. Но совет очень кстати. На самом деле мне нужна определенная область листа, но ее местоположение не является постоянным. При этом данные в подавляющем большинстве случаев находятся в том диапазоне который я использую. Далее я уточняю границы диапазона и передаю его из массива в recordset. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2016, 14:26 |
|
|
start [/forum/topic.php?fid=45&msg=39189797&tid=1613834]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 449ms |
0 / 0 |