|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, програмно, пытаюсь автоматизировать как можно больше... добавляю два пробела спереди и сзади к значениям (для центирования), а когда значение пусто, то в ворде присутствует третий скрытый символ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 16:20 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
А сам эксель тут для чего вообще? Может опишешь весь процесс, потому что раз не получилось локально оптимизировать цикл, надо расширять горизонты. К примеру, можно управлять экселем из ворда, можно вордом из экселя, можно вордом забирать данные минуя буфер обмена, из БД сразу, или, к примеру, забирать с листа экселя как из БД через ADODB. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 16:26 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, в эксел вводятся исходные данные, происходит их обработка с помощью формул и макросов, полученные данные выстраиваются в итоговом виде, далее в экселе нажимаю кнопку, которая необходимый диапазон ячеек копирует в буфер, запускаю готовую форму (заполнены прочие данные) в ворде, в нем запускаю данный код, заполняется и форматируется (объединяются ячейки где необходимо) таблица и т.о. формируется готовый отчет. Основная работа происходит в экселе, в ворд отправляются готовые данные и проставляется номер страниц. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:26 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Хорошо, если данные готовятся в экселе с помощью макросов, почему бы не объединить ячейки в экселе до копирования? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 00:44 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, не совсем удобно объединять ячейки в экселе, т.к. объединение будет макросом, не будет отмены действия, а содержимое ячеек с формулами динамическое и все может изменяться на любом этапе. Либо макросом после объединения ячеек и копирования в буфер в нем же сразу и возвращать исходный вид ячеек. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 06:03 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, попробовал вручную скопировать в ворд объединенные в экселе ячейки. Не работает, ворд объединенные ячейки воспринимает как одну ячейку и соответственно в выделенный диапазон для вставки просто дублирует в каждую ячейку содержимое буфера. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 09:03 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
А у меня нормально прошло именно на твоих файлах ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:00 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, извини, а как ты делал? Я в экселе ячейку Ctrl+C, в ворде выделяю в строке ячейки и выполняю Ctrl+V; и во всех выделенных в строке ячейках продублировано содержимое исходной ячейки эксел. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:16 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
я объединяю ячейки в экселе и нажимаю кнопку. В ворде ничего не выделяю, просто вставляю ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:22 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Есть еще такая штука как "слияние данных" Я с ней сам не работал По идее как раз и предназначена для твоих целей, но не знаю, удовлетворит ли в нужной мере ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:50 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, я понял, данные из буфера вставляются не в таблицу, а вставляется сама таблица целиком. Вариант интересный, но, так понимаю, нужно будет задавать позицию курсора для вставки и форматировать вставленную таблицу (задавать ширину столбцов и т.п.). Интересным еще представляется вариант с передачей из эксела в ворд номеров строк для объединения ячеек. Ведь тогда будут общие переменные для ворда и эксела и можно сделать, чтобы по нажатию кнопки в экселе таблица вставлялась в ворд без дополнительного запуска макроса в ворде. Но как это сделать пока не знаю, нужно изучать вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:20 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Markovich21 Вариант интересный, но, так понимаю, нужно будет задавать позицию курсора для вставки и форматировать вставленную таблицу (задавать ширину столбцов и т.п.). Markovich21 по нажатию кнопки в экселе таблица вставлялась в ворд без дополнительного запуска макроса в ворде. Смысл в том, что Эксель создает объект Word-а и может им управлять в такой же мере, как ты это делаешь с помощью макроса самого Ворда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:31 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, еще раз большое спасибо. Правильно понимаю, что второй вариант с управлением вордом из эксела более оптимальный? Если да, буду его изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 12:22 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Понятие "оптимальный" зависит от того, как будет развиваться твой проект и сколько времени ты можешь этому посвятить. Если нужно быстро доделать и забыть - то первый вариант. Второй вариант более гибкий, более перспективный (кстати, с тем же успехом можно управлять экселем из ворда), но потребует времени и экпериментов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 12:25 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
я в отпуск, заглядывать-то буду, но времени вдумчиво отвечать и экспериментировать, не будет, так что очень рассчитываю, что коллеги помогут в этом топике ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 17:34 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, еще раз спасибо, буду по-возможности разбираться со вторым вариантом, он мне нравится. Хорошего качественного и душевного отдыха! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 23:03 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro Я поэкспериментировал с этим кодом. Даже если просто убрать все внутренности цикла, тормозит сама проверка Код: vbnet 1.
Попытки обращения к ячейке другими способами результата особо не дали. Я не знаю, какие у тебя возможности есть при манипуляции экселем, кроме копипасты По большому счету, нужно заранее вычислить номера строк для объединения ячеек Индексированные свойства тормозят. Потому что при обращении по индексу где-то внутри происходит перебор. Чтобы не тормозило, нужно использовать for each. Кроме того Cells это Range и есть, в Cells.Range смысла нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2021, 12:09 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Доброго времени суток, уважаемые форумчане! Последовав рекомендациям, подошел с другой стороны к решению вопроса копирования таблицы из excel в word с форматированием определенных строк по условию. Выгрузка в word осуществляется по нажатию кнопки "заполнить таблицу word" в экселе, строки для форматирования определяются в экселе и передаются в ворд. Т.о. таблица величиной 2000 строк передается в ворд значительно быстрее, за 37сек (в предыдущем варианте в ворде код выполнялся 87сек). Т.к. в макросах не силен совсем, прошу посмотреть представленный ниже код на предмет корректности написания и может что то в нем можно оптимизировать и ускорить. И еще, ответьте, пожалуйста, на вопрос можно ли таблицу передавать в ворд в виде переменной (предполагаю, что с помощью переменной передача в ворд будет происходить еще быстрее)? Сам попытался выгрузить с помощью переменной, ничего не получилось. В качестве примера прикладываю архив с двумя файлами ("источник" эксел и "приемник" ворд). Заранее спасибо. Код: 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 11:51 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Markovich21 Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:00 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, авторэто очень плохая идея что в этом плохого? после того как закомментировал эту строку вывалилась ошибка в: Код: vbnet 1.
значит это место нужно переработать, а смысл доработки есть или все-таки оставить Код: vbnet 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:23 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
перед этой строкой On Error Resume Next Markovich21 вывалилась ошибка в: Код: vbnet 1.
Markovich21 что в этом плохого? Ошибки должны обрабатываться корректно, анализироваться. А ты взял и заглушил все ошибки, типа "я не вижу проблемы, значит её и не существует" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:42 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Markovich21 Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:44 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro Markovich21 Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:45 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Markovich21 что то в нем можно оптимизировать и ускорить. Возможно, быстрее будет скопировать в ворд таблицу целиком, а потом объединить только нужные ячейки, которые вычислены заранее, как я и предлагал ранее ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:48 |
|
Очень долгий перебор строк в цикле
|
|||
---|---|---|---|
#18+
Shocker.Pro, про Код: vbnet 1.
и Код: vbnet 1.
понял, спасибо за замечание. А вот с авторВозможно, быстрее будет скопировать в ворд таблицу целиком, а потом объединить только нужные ячейки, которые вычислены заранее, как я и предлагал ранее я не понял, что имеется ввиду. В коде работает вроде бы так: в экселе таблица копируется в буфер, затем в ворде вставляется таблица целиком, а затем объединяются строки по списку из экселя (номера строк берутся из небольшого цикла) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 19:27 |
|
|
start [/forum/topic.php?fid=60&msg=40080233&tid=2154713]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 392ms |
0 / 0 |