|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
Добрый день! Ситуация такая: есть рабочая книга Excel 2007, в которой в определенном столбце хранятся коды товаров. На локальном диске лежит папка с изображениями каждого товара, если код товара оncутствует в названии картинки, то вместо нее вставляется картинка "Нет фото". Проблема: отчет отрабатывает очень долго, 6-8 минут. Есть список кодов > 3 000 товаров, для каждого товара вставляется картинка. Изображение само по себе небольшое, уменьшать уже некуда. Вес изображения: 1,5-2 Кб Размер: 61х39 пикселей. Отключил перерисовки объектов на экране, чтобы ничего не мигало, отключил вычисления формул и прочее. Время отработки немного уменьшилось, НО, по мере вставки картинок, скорость все меньше и меньше. Мне кажется, проблема в том, что я обращаюсь к каждой ячейке в рабочей книге используя цикл While. Просто обычный перебор кодов и 2 условия на вставку. Как можно существенно ускорить процесс вставки изображений? Может нужно каким-то образом использовать массивы? Код на VBA очень простой. Один цикл While и два условия. Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2013, 15:34 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
endurance, Вместо Pictures.Insert попробуйте Shapes.AddPicture. Метод Insert может свободно влепить и линк заодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 02:13 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
VladConn, спасибо за ответ. Попробовал, в принципе, одинаково, те же 6 минут. Почитал на счет массивов, мол, они намного быстрее работают, так как все вычисления производятся в памяти, но у меня никаких вычислений нет, никаких формул и рассчетов. Просмотрев еще раз код, заметил, что у меня не работает удаление старых картинок (когда макрос запускается), подумал, наверно в этом проблема, поскольку изображения накладывались друг на друга, пофиксил, но результат такой же. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 12:43 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
1. Бежать на фиг от этих тормознутых "ленейчатых" офисов. В 2003 эта процедура (вставка 5050 картинок по 4360Бт) заняла 15с. Из низ 3с удаление предыдущих 5050 картинок. Правда без проверки. Тупо все подряд. 2. Если уж никак не избавиться от риббоновских, то: 1. Никогда не делать Select. Тем более в цикле для каждой строки. Надо увеличить высоту строки - увеличь до цикла без select сразу для всех строк. 2. Много времени занимает и передвижка картинки. Вставляй картинку сразу в нужное место и без выбора (With): Код: vbnet 1. 2. 3.
Ширину (100) и высоту (50) установи нужную тебе ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 14:59 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
Удалить все картинки можно быстрей: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 15:34 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
У меня картинок нет поэтому и строки вставки не изменял. Работает только первая часть (с nothing.JPG)" Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 16:35 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
alex77755, спасибо большое, сделал все как вы сказали, убрал селект, убрал with, заменил метод и в итоге 50 секунд на 3 000 значений. На счет удаления, это у меня пока тестовый вариант, поэтому сношу все картинки, которые есть в рабочей книге, но в действительности наверно придется удалять только выбранный диапазон (пока не работает). Есть ли тут какие-то подводные камни? Поскольку, если книгу обратно откроют, то нужно будет сначала удалить имеющиеся картинки, а потом заново по нужному фильтру прогрузить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2013, 17:23 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
Еще такой вопрос возник. Необходимо, чтобы изображения были по центру ячейки. Но при вставке, они не становятся привязанными к этой ячейке, то есть я не могу их выровнять используя метод для выравнивая текста. К тому же не могу использоваться Selection в цикле. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2013, 11:48 |
|
Медленная вставка изображений в отчет > 3000 значений
|
|||
---|---|---|---|
#18+
Разобрался, параметр Range(rgResult.Address).Offset(i, 6).Left подогнал под свои размеры и программно увеличил размеры столбцов. alex77755 , а нет ничего по шустрее, чем удаление таким способом? Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2013, 15:41 |
|
|
start [/forum/topic.php?fid=60&fpage=50&tid=2156652]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 426ms |
0 / 0 |