powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как циклом заполнить закладки в Ворде?
4 сообщений из 4, страница 1 из 1
Как циклом заполнить закладки в Ворде?
    #38652046
Damasevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Помогите, пожалуйста, разобраться.

Имеется База клиентов в Аксессе 2007. Для клиентов формируются счета, договора, акты и т.п. Выгружаются в Ворд.
Сейчас это выглядит так:
На кнопку в подчиненной ленточной форме "Договора" вешается программа, которая -
Поочередно для каждого используемого в Вордовском документе поля объявляется переменная. Каждой переменной присваивается значение - либо sNumDog = Me.Controls("Номер договора").Value - если поле есть в этой форме или sFirma = DLookup("[Название]", "Клиенты", "[ИНН]='" & Me![ИНН] & "'") - если поле в главной форме или где-то еще.
Далее берется шаблон и в закладки в тупую вставляются эти переменные, причем, если одна переменная вставляется в документ несколько раз, то это выглядит так:
oDoc.Bookmarks("bNumDog1").Range.Text = sNumDog
oDoc.Bookmarks("bNumDog2").Range.Text = sNumDog
oDoc.Bookmarks("bNumDog3").Range.Text = sNumDog

Можно ли как-нибудь пройтись по всем закладкам циклом For each, а в идеале пройтись по всем полям формы тоже циклом, выбрать нужные только в этом документе и так же циклом вставить все закладки? Потому-что разных подчиненных форм и формируемых документов десятки и каждый раз набивать простыню надоело.
...
Рейтинг: 0 / 0
Как циклом заполнить закладки в Ворде?
    #38652183
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damasevich,

я вместо слияния и закладок применяю замену
для любого количества (номер договора) в шаблоне --один вызов замены
если какой-то реквизит , в данном шаблоне не требуется, ошибки не возникает

sub zam_dogovor(n_shablon)
''''''''''''''''''''
zamena "bNumDog1", sNumDog
''''''''''''''''''''''
end sub
...
Рейтинг: 0 / 0
Как циклом заполнить закладки в Ворде?
    #38652203
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DamasevichМожно ли как-нибудь пройтись по всем закладкам циклом For eachМожно
Код: vbnet
1.
2.
3.
4.
Dim bk As Object 'Bookmark
For Each bk In oDoc.Bookmarks
  If bk.Name Like "bNumDog*" Then bk.Range.Text = sNumDog
Next

Хотя можно вставлять текст в одну закладку, а в нужных местах документа вставить поля { REF имя_закладки }
Damasevichа в идеале пройтись по всем полям формы тоже циклом, выбрать нужные только в этом документе и так же циклом вставить все закладки?Конечно, можно! Только надо как-то установить соответствие между полями формы и именами закладок.
...
Рейтинг: 0 / 0
Как циклом заполнить закладки в Ворде?
    #38652244
Damasevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлично! Спасибо! Вот только закладки то из разных полей: NumDog, DateDog, SumDog
Как заставить его пройтись по всем полям, например такая конструкция будет работать?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim Pole() As Array
'тут присваиваем значения полей элементам безразмерного массива
For Each i in Pole()
    For Each bk In oDoc.Bookmarks
        If bk.Name Like "b"&Pole&"*" Then bk.Range.Text = Pole
    Next
Next



Синтаксис VBA не моя сильная сторона :-)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как циклом заполнить закладки в Ворде?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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