73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
|
|
1 | |
Разница в скорости vba word и vba access20.09.2016, 01:18. Показов 1491. Ответов 9
Метки нет (Все метки)
Вопрос: из акса идет выгрузка данных в файл ворд, далее эти данные опять же из акса форматно обрабатываются (данные заранее были тегированы - можно сказать, я в аксе небольшой html-редактор написал , а vba бегает по выгрузке в файле и заменяет теги на курсив/жирный и так далее..)
Проблема в том, что при существенном объеме файла ворд это очень медленный процесс - приходится использовать объект .words (ужасно медленный перебор в цикле по Range). В результате акс зависает на время выполнения скрипта, а оно доходит иногда до минуты и более (на документ объемом больше 5 страниц). Вот и задумался - а можно ли освободить акс - перенеся код в шаблон ворд и просто выгрузив данные с рекодрсета, передать команду на запуск кода обработки уже в файле? Получится ли и будет ли разница в скорости обработки? Есть ли замена на что-то более скоростное, чем объект words (тегами выделяются отдельные слова и целые предложения)?
0
|
20.09.2016, 01:18 | |
Ответы с готовыми решениями:
9
Vba вывод из access в word Доступ к элементам Word из Access средствами VBA Как распечатать указанную страницу документа Word из vba Access? Разобраться с sql запросом в vba и правильным подключением базы access - word |
Мы один, давай на "ты"
3598 / 1327 / 323
Регистрация: 16.06.2016
Сообщений: 3,143
|
|
20.09.2016, 03:55 | 2 |
Тиритически (для любителей грамматики), код выполняющийся в родном приложении, а не сервере автоматизации, будет несколько быстрее. Но, ИМХО, дело в данном случае не на какой стороне исполняется код, а в алгоритме - 2 раза перебираются данные.
0
|
шапоклякистка 8-го дня
|
|
20.09.2016, 07:29 | 3 |
Eujine, я подобную задау решала так:
1) делаем текстовое поле на форме. 2) текст с тегами вставляем туда, 3) затем переводим поле в режим rich text, 4) в поле выделить все, скопировать, вставить в ворд. Добавлено через 1 минуту Уточняю: именно скопировать-вставить, через буфер обмена, обязательно.
0
|
Мы один, давай на "ты"
3598 / 1327 / 323
Регистрация: 16.06.2016
Сообщений: 3,143
|
||||||
20.09.2016, 09:37 | 4 | |||||
Зашёл, посмотрел ещё раз...
Eujine, а какой Word используешь? Я тут посмотрел немного в объектной модели... Может тебе не html применять если версии от 2007 и новее? К сожалению, ты не говоришь про то, как получаешь свою строку. Есть вариант из ADO.Recordset получать XML-строку и путём XSLT-преобразования (это ещё нужно написать) вставлять в Word.
Небольшой пример есть в Help'е Word'а.
1
|
Модератор
|
|
20.09.2016, 09:41 | 5 |
я обычно программно формировала НТМ файл(уже с форматированием) и уже его открывала вордом или екселем или броузером в зависимости от того, что требовалось
--только просмотр в броузере --печать в ворд с автоподгонкой ширины таблицы или несколько разных таблиц без разрыва по страницам, но с переносом шапки(например на лист 1 вслезла таблица 1 и кусок таблицы 2, поэтому второй лист начинается с шапки 2) --или доработка в ексель с небольшой руганью о несовпадении форматов
0
|
73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
|
|
20.09.2016, 13:23 [ТС] | 6 |
Word у меня в основном 2010, но акс - 2003.
Про html я образно. У меня в базе, в поле таблицы слова выделяются тегами, например: <слово>. При выгрузке в ворд, туда переносится <слово>, а дальше код пробегает по содержимому и ищет все пары <>, далее слово между ними он делает курсивным, а теги сносит.
0
|
шапоклякистка 8-го дня
|
||||||
20.09.2016, 17:06 | 7 | |||||
0
|
73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
|
|
20.09.2016, 18:38 [ТС] | 8 |
У меня 2003 акс, написал же- нет там rich text. И у большинства пользователей стоит третий.
0
|
Мы один, давай на "ты"
3598 / 1327 / 323
Регистрация: 16.06.2016
Сообщений: 3,143
|
||||||
21.09.2016, 05:25 | 9 | |||||
Но можно форматировать строку как html. С Word до 2007 в таком случае будет работать код
1
|
шапоклякистка 8-го дня
|
|
21.09.2016, 08:19 | 10 |
0
|
21.09.2016, 08:19 | |
21.09.2016, 08:19 | |
Помогаю со студенческими работами здесь
10
Как заполнить Combobox в документе Word из программы, написанной на VBA-Access DLL для VBA и VB - почему разница в работе? Код VBA в Access 2010 работает, в Access 2007 выдает ошибку Как заполнить базу данных Access с помощью vba в том же access и считать из нее инфу? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |