Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 09:34   #1
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию массовое создание документов Word

Доброго дня всем!
Стоит задача сделать несколько документов Word на основе одного шаблона и записей в Excel. Код (сокращенный) следующий:
Код:
Sub Macro1()
'
' Ìàêðîñ1 Ìàêðîñ
'
Dim do8 As Word.Document
Dim db8 As Bookmarks
PathA = ThisWorkbook.Path
Set do8 = GetObject(PathA & "\Øàáëîíû\ÐàçðåøåíèÿÞË.docx")
    Set db8 = do8.Bookmarks
    y = 3
            While ThisWorkbook.Worksheets("Ëèñò1").Cells(y, 13).Value <> ""
                db8("dp2").Range.Text = ThisWorkbook.Worksheets("Ëèñò1").Cells(y, 7).Value
        do8.SaveAs Filename:=PathA & "\Âûõëîï\ÐàçðåøåíèÿÞË" & "_" & ThisWorkbook.Worksheets("Ëèñò1").Cells(y, 4).Value
         y = y + 1
            Wend
do8.Close SaveChanges:=False
Set db8 = Nothing
'
End Sub
Отрабатывает только один цикл, потом выдает ошибку (не может найти объект Bookmarks). Подскажите, плз, что я сделал не так?

Последний раз редактировалось Аватар; 28.09.2015 в 10:03.
glumz вне форума Ответить с цитированием
Старый 28.09.2015, 09:59   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
массовое создание документов Word на основе одного шаблона и записей в Excel
это уже сделали программисты Microsoft и дали инструмент пользователям.
инструмент называется "документ слияния" (ищите в Word)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.09.2015, 10:34   #3
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

проблема в том что из всего массива Excel не все ячейки заполнены и надо выбрать определенные строки. Для ИП и Юр.лиц заполняются разные столбцы и не всем контрагентам находящимся в реестре необходимо формировать документы
glumz вне форума Ответить с цитированием
Старый 28.09.2015, 13:04   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

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

в моей практике есть уникальный клиент, который пользуется сделанным мною документом слияния уже больше 20 лет!
благополучно мигрировав за это время со стартового Word6.0 в новые версии офисов.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.09.2015, 14:46   #5
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
инструмент, описанный выше позволяет отобрать в конечный документ только нужные строки
можете создать несколько отдельных шаблонов если разница в их заполнении настолько принципиальна
в исходном ексель-файле можете сделать дополнительную(ые) колонки и с их помощью решать что будет слито в ощий документ
инструмент довольно гибкий, абсолютно производительный, и не требует ни одного байта кода.

в моей практике есть уникальный клиент, который пользуется сделанным мною документом слияния уже больше 20 лет!
благополучно мигрировав за это время со стартового Word6.0 в новые версии офисов.
нужно именно через макрос, к сожалению, объяснять долго. Тут можно инициализировать объект документ на каждом шаге цикла и будет работать, но долго. Пытаюсь сделать как в коде выше, один раз инициализировал и через метод SAVEAS сохранять файлы с нужным заполнением.
glumz вне форума Ответить с цитированием
Старый 28.09.2015, 15:44   #6
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

с примером во вложении
Вложения
Тип файла: zip пример.zip (401.0 Кб, 12 просмотров)
glumz вне форума Ответить с цитированием
Старый 28.09.2015, 19:54   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можете попробовать готовое решение для заполнения документов Word:
http://excelvba.ru/programmes/FillDocuments
EducatedFool вне форума Ответить с цитированием
Старый 29.09.2015, 09:18   #8
glumz
Пользователь
 
Регистрация: 18.01.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Можете попробовать готовое решение для заполнения документов Word:
http://excelvba.ru/programmes/FillDocuments
я видел это решение, но оно не подходит. Сделал создание объекта типа документ ворд на каждой итерации цикла и его закрытие. Все заработало, но хотелось бы понять почему при первом же срабатывании метода SaveAs все коллекции закладок пропадают так и не понял.
glumz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массовое создание файлов cool_phenomus Общие вопросы C/C++ 2 30.06.2012 20:25
Печать документов word Александр Бутырин Общие вопросы Delphi 2 10.12.2011 19:05
Создание документов Word из Excel hamlook Microsoft Office Excel 2 08.07.2011 12:13
Слияние документов WORD iBass Win Api 1 04.02.2010 22:10
Печать документов в Word... Busine2009 Microsoft Office Word 1 09.06.2009 07:48