powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в Word
25 сообщений из 26, страница 1 из 2
Экспорт в Word
    #39527125
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, здравствуйте.

Есть код выброса данных в ворд по принципу нахождения куска текста.
Когда то ПЕНСИОНЕРКА помогла, за что еще раз ей спасибо.

Код: 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.
          Set App = CreateObject("Word.Application") 
'                app.Visible = True
          App.Documents.Add OpenFiles
          Set odoc = App.ActiveDocument
          With App
              ' присваивание значений
              j = 0
              Do While j < i ' настройка форматирование выделяемого и редактируемого куска
                  .Selection.Find.ClearFormatting
                  .Selection.Find.Replacement.ClearFormatting
                  With .Selection.Find.Replacement
                      .Font.Color = 0
                  End With
                  With .Selection.Find
'                        Debug.Print xm(j), ym(j)
                      .Text = xm(j)
                      If ym(j) = " - " Then
                          .Replacement.Text = " "
                      Else
                          .Replacement.Text = ym(j)
                      End If
                      .Wrap = 1
                      .Format = True
                      .MatchCase = False
                      .MatchWholeWord = False
                      .MatchWildcards = False
                      .MatchSoundsLike = False
                      .MatchAllWordForms = False
                  End With
'                  .Selection.Find.Execute Replace:=2  сразу было так
'                  If .Selection.Find.Execute() = True Then  - вычитал на просторах про проверку перед заменой

'                 вылетает здесь
                  If .Selection.Find.Execute() = True Then .Selection.Find.Execute Replace:=2
' Replace=wdReplaceAll=2 - заменять все найденные
                  j = j + 1
              Loop
              App.Selection.HomeKey Unit:=6
              DoEvents
          End With


Работало несколько лет на нескольких компьютерах(но не много)
стало ИНОГДА бить ошибку в
Код: vbnet
1.
.Selection.Find.Execute Replace:=2


порылся на просторах, вычитал про проверку найденного перед заменой и переписал
Код: vbnet
1.
If .Selection.Find.Execute() = True Then .Selection.Find.Execute Replace:=2


но проблему не решил
ошибка
5833
An error occurred while saving undo information
В англ не силен, с транслейтом - Ошибка при сохранении отменить информацию

Кто нибудь сможет подсказать, что не так?
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527209
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А файл сильно большой? Похоже, ресурсов не хватает на сохранение информации для отмены.
Можно попробовать делать помежуточные сохранения файла.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527211
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,

Файл шаблона весит всего 35кб
другое дело, что вставок более 30...
т.к. работаю с шаблоном, то сохранять нужно по "адресу"
а потом пересохранение - не будет спрашивать на перезапись файла?
вечером попробую...
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527218
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортанвставок более 30
Ну, это совсем мало. В другом причина, скорее всего.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527219
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгортанMrShin,
т.к. работаю с шаблоном, то сохранять нужно по "адресу"
а потом пересохранение - не будет спрашивать на перезапись файла?
вечером попробую...
ну так сделайте первый раз сохранение SaveAs, а все последующие просто Save
ругаться на это не будет
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527294
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгортанРаботало несколько лет на нескольких компьютерах(но не много)
стало ИНОГДА бить ошибку в
Код: vbnet
1.
.Selection.Find.Execute Replace:=2



предполагаю, что длина заменяющего текста длиннее 255 символов
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527331
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

Скорее всего маловероятно.
Поля в таблице - текстовые
переменная string, точнее массив, вмещает больше

Проследить за этим так вот не смогу.
Но, спасибо за идею.
В обработчик ошибок загоню "строку-значение", на котором ошибка вылетает.
Попытаюсь сравнить результат нескольких ошибок

MrShinМожно попробовать делать помежуточные сохранения файла.
наутилусну так сделайте первый раз сохранение SaveAs, а все последующие просто Save
ругаться на это не будет

пока добрался до компа, обдумывал....
в данном конкретном случае важнее не получить файла вовсе, чем не полностью заполненный.
Это важный отчетный документ. Так что вынужден отказаться от идеи.
Хотя безусловно, здрава.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527351
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

тогда ловите ошибку и если она входит в разряд критических - очищайте документ и сохраняйте. т.е при нормальной работе будут промежуточные сохранения, при ошибке получат пустой документ.
еще, как продолжение идеи - делайте в шапке надпись "неправильный документ, тестирование" крупным шрифтом. по заполнению всех данных, последним действием заменяйте эту строку пустой.
т.е если вылетит непредвиденно - в шапке будет предупреждающая пользователя надпись, что документ использовать нельзя.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39527374
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наутилус,

да, оплел код и номерами строк(вероятно я слукавил, сказав, что ошибку бьет именно в том месте, я так предполагаю...)
и обработкой ошибок в выводом состояния переменных в момент ошибки.
Все это дистанционно и редко, буду собирать статистику
потом соответственно буду смотреть
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528308
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
господа, автоматизация сделанная подобным образом перестала работать с вордом 2016 . возможно кто то сталкивался. может секьюрити настройки или компоненты какие надо доустановить. вкоде аксесса происходит ошибка привызове любого метода ворда
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528320
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsDatabaseruгоспода, автоматизация сделанная подобным образом перестала работать с вордом 2016 . возможно кто то сталкивался. может секьюрити настройки или компоненты какие надо доустановить. вкоде аксесса происходит ошибка привызове любого метода ворда

не знаю что за ошибки у вас, у клиента недели две назад после апдейта офиса 2016 (Вин10, обновления были обновлениями безопасности) перестали работать все VBA функции и процедуры (из Access формировались документы Word).
полечили удалением и переустановкой офиса. отключили обновления - всё заработало как прежде
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528331
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
компов много, поставили на все 64битную версию. с одного дистрибутива. в дистрибутиве вложен хотфикс kb2999226 на компах разные ос от7 до10 с разными сп
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528346
наутилус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsDatabaseruвкоде аксесса происходит ошибка привызове любого метода ворда
текст ошибки озвучьте. чего гадать то?
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528381
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была галка по умолчанию открывать документы оутлук и прочих нередактируемых документов в режиме тольуо чтения. при этом при попытке вызова любого метода ворда приводящего к изменениям выскакивал рантайм еррор
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528383
Игортан, у меня вопрос по вашему коду. Вы открываете документ и сразу начинаете работать с
App.Selection, но перед этим ничего не выделяете. Как это работает? Если искать нужно во всем документе, то почему не в объекте odoc.Content ?
Игортант.к. работаю с шаблоном Если у вас шаблон, то правильнее создать в нем 30 меток (bookmark) и заполнять их? Примеров уйма.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528484
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )правильнее создать в нем 30 меток (bookmark) и заполнять их
Или вообще сделать Mail Merge - вставить поля и заполнять их напрямую из базы, так работает быстрее.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528512
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinАнатолий ( Киев )правильнее создать в нем 30 меток (bookmark) и заполнять их
Или вообще сделать Mail Merge - вставить поля и заполнять их напрямую из базы, так работает быстрее.

как при этом действовать, если длина заменяющего текста более 255 символов или номер договора(или дата) повторяется 10 раз или они к коллонтитулах
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528603
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАMrShinпропущено...

Или вообще сделать Mail Merge - вставить поля и заполнять их напрямую из базы, так работает быстрее.

как при этом действовать, если длина заменяющего текста более 255 символов или номер договора(или дата) повторяется 10 раз или они к коллонтитулах

Освоить, таки, закладки и ссылки на них.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528743
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАкак при этом действовать, если длина заменяющего текста более 255 символов или номер договора(или дата) повторяется 10 раз или они к коллонтитулах
Абсолюно никаких проблем со всем этим в рассылках нет. Поле воспринимает тип Memo - хоть диссертацию вставляй, одно и то же поле можно вставить сколько угодно раз, в том числе и в колонтитулы. Единственная проблема - когда в один документ нужно вставить поля из нескольких записей, но тут и букмарки, и поиск-замена также не помогут, нужно через VBA таблицу "рисовать"
...
Рейтинг: 0 / 0
Экспорт в Word
    #39528745
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и еще в пользу рассылок - сами документы гораздо более читабельны, чем при методе с букмарками, которые не видимы - в рассылках сразу видно форматирование, поля могут еще дополнительные действия над данными выполнять - изменять регистр, добавлять текст и т.п. Ворд также сам проверит на наличие ошибок - если имя поля базы данных указан неверно, программить по минимуму нужно. В общем, я не вижу никаких преимуществ букмарков перед рассылками. Если назовете - буду благодарен. Врочем, вполне можно совмещать обе технологии в одном документе.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39529325
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ),
Не ожидал, что тема без меня всплывет назад...

Анатолий ( Киев )Если у вас шаблон, то правильнее создать в нем 30 меток (bookmark) и заполнять их? Примеров уйма
по этому и ушел от закладок
ПЕНСИОНЕРКА... или номер договора(или дата) повторяется 10 раз ...х

MrShinИли вообще сделать Mail Merge - вставить поля и заполнять их напрямую из базы, так работает быстрее.
самое интересное, что когда то, до меня, было так, точнее показывали пример.
Мне правда не понравилось, вопросы возникали по подключению к данным.
Решил сделать как умею(закладки), а потом, по развитию, нужно было одинаковые вставки делать, решил переделать на нынешний - от ПЕНСИОНЕРКИ.

Ну и вероятно веский аргумент - легкость создания шаблона самим оператором.
Есть маленькая спецификация, по выводимым меткам. Делай свой внешний вид, какой захочешь.
На сколько я помню, в Mail Merge придется прописывать источник в Word файле.
MrShinЕсли назовете - буду благодарен. Впрочем, вполне можно совмещать обе технологии в одном документе.
Внешний вид шаблона word получается идентичен вашему, один в один.
За счет циклов код не большой.
Больше кода до и после вставки значений.
Ошибка, с которой я столкнулся - редкая, пока не повторилась, просто жду.
Буду знать строку и состояние переменных в момент ошибки. Потом отпишусь.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39529333
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )Игортан, у меня вопрос по вашему коду. Вы открываете документ и сразу начинаете работать с
App.Selection, но перед этим ничего не выделяете. Как это работает? Если искать нужно во всем документе, то почему не в объекте odoc.Content ?
Вот это, конечно, правильный вопрос...
Т.к. ленив ( иногда прихожу к такому выводу), то в работающий код не лезу...
Типа не мешай машине работать, не ремонтируй...

Значит нужно покопаться в этом глубже...
Спасибо за вопрос.
...
Рейтинг: 0 / 0
Экспорт в Word
    #39529345
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгортанНа сколько я помню, в Mail Merge придется прописывать источник в Word файле
Нет, он формируется парой строк VBA кода. В файле достаточно только вставить поля. Имя поля можно написать произвольное, ошибка при неправильном имени возникает только на этапе Merge
...
Рейтинг: 0 / 0
Экспорт в Word
    #39544613
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пришла ошибка
№ - 5833. An error occurred while saving undo information.
j=0; _xm=<<Patient>> ;_ym=JOHN, SHARMELLE 223-24 111THAVENUE;
10/24/2017 8:20:18 AM;
строка - 1050


Код: 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.
820       With App
              ' присваивание значений
830           j = 0
840           Do While j < i '
              ''настройка форматирование выделяемого и редактируемого куска
850               .Selection.Find.ClearFormatting
860               .Selection.Find.Replacement.ClearFormatting
870               With .Selection.Find.Replacement
880                   .Font.Color = 0
'                            .Font.Bold = True
890               End With
900               With .Selection.Find
                  '' если вы ошиблись в имени закладки, просто не проходит замена
'                        Debug.Print xm(j), ym(j)
910                   .Text = xm(j)
920                   If ym(j) = " - " Then
930                       .Replacement.Text = " "
940                   Else
950                       .Replacement.Text = ym(j)
960                   End If
970                   .Wrap = 1
980                   .Format = True
990                   .MatchCase = False
1000                  .MatchWholeWord = False
1010                  .MatchWildcards = False
1020                  .MatchSoundsLike = False
1030                  .MatchAllWordForms = False
1040              End With
1050              If .Selection.Find.Execute() = True Then .Selection.Find.Execute Replace:=2
' Replace=wdReplaceAll=2 - заменять все найденные
1060              j = j + 1
1070          Loop
              ' Move the cursor to the top of the document. в начало документа
1080          App.Selection.HomeKey Unit:=6
1090          DoEvents
              ' Turn hourglass off.
'                    Screen.MousePointer = 0
1100      End With



Нарыл на просторах страницу ошибок для 2010
Но там тоже 5833 нету...

и еще
везде сделаны номера строк и вывод строки ошибки в сообщении об ошибке.
Раз в пол года, может реже. Приходит ошибка и в ней 2 непонятки:
Err.Number=0
и Erl=0

вида
MsgBox "Error number " & Err.Number & ". Step " & Erl -->Error number 0. Step 0
Как помнится, при работе с Outlook и Word.

Есть какие мысли?
...
Рейтинг: 0 / 0
Экспорт в Word
    #39544999
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИгортанAn error occurred while saving undo information.

Есть какие мысли?

Текст ошибки толсто намекает на глюк. Или нехватку ресурсов.

ЗЫ. Ну и "про закладки"

1. "Повторяются" - дык закладка исходно была сделана для ССЫЛОК на нее. Освойте вставку ссылок, наконец. Не в VBA-коде - при проектировании шаблона.

2. "Не видны" - никто не мешает вписывать текст в закладки, шоб видно и понятно.

ЗЗЫ. А есть еще переменные документа. Их можно присваиваить и на них можно ссылаться.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Экспорт в Word
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]