|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
Пытаюсь выгрузить данные запрса в ворд. Открываю существующий файлик, ляпаю в нём табличку и создавая параграфы в каждой ячейке пишу туда соответствующие данные запроса. Сам процесс занимает афигительно много времени при количестве записей больше 30-ти. При этом загрузка проца процессом WINWORD.EXE 45-55%. При чём это даже при отключении визуализации выгрузки Выгружают так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вопрос: есть ли способ выгружать данные в ворд быстрее? Ведь если сделать отчёт во внутреннем формате Акса и произвести операцию Сервис - Связи с Офис - Публикация в Microsoft Office Word, то 500 записей перекидываются в ворд без проблем за 5 секунд с форматированием. Выравнивание текста, конешн, идёт не таблицей, а табуляцией, но чёт думаю и таблицей можно выводить быстро или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 07:52 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karich, Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 08:55 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karich, хотя --где чтение очередной записи если в выборке есть записи While Not tbl.EOF .Cell(1 + k, 2).Range.InsertParagraph .Cell(1 + k, 2).Range.Paragraphs(1).Range.Text = tbl!fio k=k+1 ''''''''''''''''''''''''''''''чтение Wend ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 09:03 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, да есть там переход на новую запись. просто проца оч большая и однотипная. всю копировать сюда не стал. сам факт вывода первых 200 записей зафиксирован ... в течение 20 минут. Как я понимаю, сама технология вывода таким образом медленная. Вот и вопрос: есть ли технология быстрее? мож отключить чего нужно кроме визуализации. Ну и загрузка процессора по 50% при передаче обычных текстовых строк ... это ж просто капец! не Война и Мир ж каждой строке. Там больше половины ячеек просто Да или Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 10:06 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karichВопрос: есть ли способ выгружать данные в ворд быстрее? если все эти действия оформить в виде процедуры (макроса) в Ворде, а из Акцесса - только вызывать этот макрос, - должно быть быстрее ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 11:31 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
qwerty112kar-karichВопрос: есть ли способ выгружать данные в ворд быстрее? если все эти действия оформить в виде процедуры (макроса) в Ворде, а из Акцесса - только вызывать этот макрос, - должно быть быстрее ... ну так а почему стандартный экспорт в ворд пашет в сто раз быстрее, чем через вба? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 12:27 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar_karichqwerty112пропущено... если все эти действия оформить в виде процедуры (макроса) в Ворде, а из Акцесса - только вызывать этот макрос, - должно быть быстрее ... ну так а почему стандартный экспорт в ворд пашет в сто раз быстрее, чем через вба? имхо, по той же самой причине (по которой макрос в ворде будет выполняться быстрее, чем тоже из Акс-а) - "стандартный экспорт в ворд", в процессе экспорта, НЕ выполняет работу со сторонним COM-объектом ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 12:48 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
qwerty112kar_karichпропущено... ну так а почему стандартный экспорт в ворд пашет в сто раз быстрее, чем через вба? имхо, по той же самой причине (по которой макрос в ворде будет выполняться быстрее, чем тоже из Акс-а) - "стандартный экспорт в ворд", в процессе экспорта, НЕ выполняет работу со сторонним COM-объектом тогда логичен вопрос: как реализовать создание вордовского файла и закинуть туда данные без работы с сторонним комовским объектом? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 12:57 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karichqwerty112пропущено... имхо, по той же самой причине (по которой макрос в ворде будет выполняться быстрее, чем тоже из Акс-а) - "стандартный экспорт в ворд", в процессе экспорта, НЕ выполняет работу со сторонним COM-объектом тогда логичен вопрос: как реализовать создание вордовского файла и закинуть туда данные без работы с сторонним комовским объектом? нуу, могу и повторить, мне не жалко qwerty112если все эти действия оформить в виде процедуры (макроса) в Ворде, а из Акцесса - только вызывать этот макрос, - должно быть быстрее ... т.е., в Аксе будет что-то типа такого Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 13:06 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
qwerty112kar-karichпропущено... тогда логичен вопрос: как реализовать создание вордовского файла и закинуть туда данные без работы с сторонним комовским объектом? нуу, могу и повторить, мне не жалко qwerty112если все эти действия оформить в виде процедуры (макроса) в Ворде, а из Акцесса - только вызывать этот макрос, - должно быть быстрее ... т.е., в Аксе будет что-то типа такого Код: vbnet 1. 2. 3. 4.
тык какая разница где макрос будет лежать: в аксе или в ворд? в любом ж случае комовский объект будет создаваться. разница то в чём? в обоих случаях ситуация с множеством мелких обращений ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 13:18 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karichтык какая разница где макрос будет лежать: в аксе или в ворд? в любом ж случае комовский объект будет создаваться. разница то в чём? в обоих случаях ситуация с множеством мелких обращений "цэтирую" С.Форт, Т.Хоун, Д.Релстон : Access 2000, Энциклопедия пользователя... код автоматизации быстрее всего выполняется на сервере автоматизации. Другими словами, при автоматизации объектов, свойств и методов Word, код VBA должен быть помещён в шаблоны Word, а не скопирован в Access. ... Выполнение кода в Word происходит гораздо быстрее, поскольку отпадает необходимость в перекрёстной связи для каждой инструкции автоматизации. Если код находится в Word, код VBA выполняется в рамках одного процесса. я этим "дядькам" - верю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 13:31 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karich, авторSet q = CurrentDb.QueryDefs("Запросик") q.Parameters("Параметр_формы") = Параметр_формы откуда Запросик берет данные -----------сеть,локалка а вы уж очень сократили код я запустила циклом на 500 записей --какие-секунды(таблица локальная) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 14:03 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karichесть ли способ выгружать данные в ворд быстрее? Есть. 1. Метод InsertDatabase объекта Range. Но ваш запрос с параметром здесь не пройдет. Нужно указывать текст запроса, в котором вместо параметра указывать значение явно. 2. Откыть ADODB.Recordset, его методом GetString получить и вставить в документ текст с разделителями, а затем методом ConvertToTable объекта Range преобразовать в таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 14:54 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
qwerty112kar-karichтык какая разница где макрос будет лежать: в аксе или в ворд? в любом ж случае комовский объект будет создаваться. разница то в чём? в обоих случаях ситуация с множеством мелких обращений "цэтирую" С.Форт, Т.Хоун, Д.Релстон : Access 2000, Энциклопедия пользователя... код автоматизации быстрее всего выполняется на сервере автоматизации. Другими словами, при автоматизации объектов, свойств и методов Word, код VBA должен быть помещён в шаблоны Word, а не скопирован в Access. ... Выполнение кода в Word происходит гораздо быстрее, поскольку отпадает необходимость в перекрёстной связи для каждой инструкции автоматизации. Если код находится в Word, код VBA выполняется в рамках одного процесса. я этим "дядькам" - верю :) попробую позже. ща уж не до того. спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 15:05 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
kar-karich, столкнулся тоже с такой же проблемой недавно , как у ТС, необходимо было по шаблону создать word документ,содержащий закладки и таблицу, в таблицу надо было вывести порядка 17000 строк из рекордсета. Сначала решал задачу с помощью кода, аналогичного, приведенному ТС, ждал минут 40, не дождался. Помог метод, приведенный Гетцом (документ сформировался за две минуты на маломощном ПК) Код: 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. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2013, 06:29 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
метод, обозначенный qwerty112 работает так же медленно. Сделал через вывод результата запроса методом OutputTo. Потом открыл файл и добавил форматирование программно. Скорость вывода увечилась в разы. 10 минут уложились в секунд 30 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2014, 14:58 |
|
Вывод отчёта в ворд средствами vba
|
|||
---|---|---|---|
#18+
guest_rusimport17000 строк из рекордсета не всякий комп откроет таблицу в 250-300 страниц у меня как-то была такая потребность --выводила псевдо -таблицей(по сути гладкий текст и псевдо-графика этот объем --для EXCEL ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2019, 16:58 |
|
|
start [/forum/topic.php?fid=45&fpage=36&tid=1610868]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 143ms |
0 / 0 |