Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Cоздание документа на основе нескольких шаблонов, Объединить несколько документов в один 
V
    Опции темы
ezhikov
Дата 10.10.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Приветствую уважаемые!

Формирую Word-документы на основе шаблонов и полей автоматизации в них {DOCVARIABLE  name  \* MERGEFORMAT}. 
Примерный код в Access:
Код

Dim gobjWord As Word.Application 
Dim objDocument As Word.Document 
Set gobjWord = New Word.Application
Set objDocument = gobjWord.Documents.Add("путь к шаблону")
objDocument.Variables("name").Value = "пурум-пурум"
objDocument.Fields.Update
gobjWord.Visible = True
Set objDocument = Nothing
Set gobjWord = Nothing

Пользователь выбирает в списке необходимые шаблоны и они открываются/печатаются последовательно.
Возникла необходимость сформировать один документ на основе нескольких шаблонов, т.е. чтобы на выходе я получил один word-документ, в котором последовательно засунуты выбранные шаблоны(документы). Подскажите идею объединения нескольких документов в один.  При этом у исходных шаблонов может быть разная ориентация.

Это сообщение отредактировал(а) ezhikov - 10.10.2008, 10:45
PM MAIL   Вверх
Akina
Дата 10.10.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Читаем справку Ворда по термину "Главный документ".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ezhikov
Дата 10.10.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



"Главный документ. Документ-контейнер, объединяющий в себе нескольких отдельных файлов (так называемых вложенных документов). С помощью главного документа можно создавать и обрабатывать сложные документы, состоящие из нескольких частей, например книги, разделенные на главы.) "
Не совсем могу понять, как мне здесь использовать технологию "главного документа".  
Изначально создавать "главный документ" со ссылками на все шаблоны? Тогда придётся его постоянно изменять, т.к. шаблоны меняются (названия/количество).  Потом из него выделять только те. которые выбрал пользователь в списке...
Формировать программно на выходе"главный документ", но, как я понимаю, придётся сначала создать отдельные документы, а потом к ним привязать ссылки в "главном..."?...  smile  не могу понять... Мне бы хотелось на выходе получить один документ.
PM MAIL   Вверх
Akina
Дата 10.10.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ezhikov
Дата 10.10.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Akina
Может ещё покажите примерны код, ибо в справке Word такого я вряд ли найду. Например, как мне в "главный документ" вставить документ, созданный на базе шаблона (при том, что он(сформированный документ) не сохранен как отдельный файл).

Это сообщение отредактировал(а) ezhikov - 10.10.2008, 13:03
PM MAIL   Вверх
Akina
Дата 10.10.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(ezhikov @  10.10.2008,  14:02 Найти цитируемый пост)
как мне в "главный документ" вставить документ

Что такое макро-рекордер - в курсе? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ezhikov
Дата 10.10.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Akina
Могу ли я в "главный документ", вставить вложенный документ, который ещё не существует как отдельный файл, к которому нельзя указать путь(его полное имя)?
p.s. формирование "главное документа" со списком исходных шаблонов мне не совсем подходит...

Это сообщение отредактировал(а) ezhikov - 10.10.2008, 14:16
PM MAIL   Вверх
bopoha
Дата 10.10.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



ezhikov, Как можно положить на полку вещь, которая появится у вас только завтра? Правильно никак. Вы зачем себе сложности придумываете? Проблемы решать нужно!

Решение 1. 
Формируем подчиненные документы. Результаты формирования программно копируются в главный документ. По окончанию работы подчиненные документы удаляются. В результате пользователь получает свой документ. Реализуется легко и просто.

Решение 2.
Формируем подчиненные документы. Создаем общий документ и в нем создаем ссылки на подчиненные - в Word такое возможно. Отображаются в главном документе все подчиненные. При этом они должны будут лежать все вместе. Не удобно!

Я выбираю первое решение!
PM MAIL WWW ICQ Skype GTalk   Вверх
ezhikov
Дата 10.10.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



bopoha
"Результаты формирования программно копируются в главный документ" - у меня результатом является открытый документ (некая word-переменная). 
Собственно в этом и вопрос. Правильно ли я понял, что для реализации этих решений сформированные документы необходимо сохранять/удалять?

PM MAIL   Вверх
Akina
Дата 10.10.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(ezhikov @  10.10.2008,  15:43 Найти цитируемый пост)
у меня результатом является открытый документ (некая word-переменная). 

Select All - Copy to Clipboard. Только программно.
ну и Paste в другой документ (некая другая word-переменная). 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ezhikov
Дата 10.10.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Цитата(Akina @  10.10.2008,  14:54 Найти цитируемый пост)
ну и Paste в другой документ (некая другая word-переменная).

А как сохранить исходную ориентацию шаблона/документа? Шаблоны могут быть разной ориентации.
(кроме как программно узнать ориентацию шаблона и принудительно изменить ей при вставке)?


Это сообщение отредактировал(а) ezhikov - 10.10.2008, 15:39
PM MAIL   Вверх
Akina
Дата 10.10.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(ezhikov @  10.10.2008,  16:29 Найти цитируемый пост)
как сохранить исходную ориентацию шаблона/документа?

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ezhikov
Дата 10.10.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Akina
Угу... получилось... 

Код

         objDocument.Select
         objDocument.Application.Selection.Copy
         objDocument2.Activate
         objDocument2.Application.Selection.EndKey Unit:=wdStory
         objDocument2.Application.Selection.InsertBreak Type:=wdSectionBreakNextPage
         objDocument2.Application.Selection.PasteAndFormat (wdPasteDefault)
 

         
Всем спасибо...


Это сообщение отредактировал(а) ezhikov - 10.10.2008, 17:47
PM MAIL   Вверх
ezhikov
Дата 13.10.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 7.1.2006

Репутация: нет
Всего: 1



Ни как не могу справиться с проблемой...
Если первым выбирается шаблон с закладками, то получаю ошибку 5101 "Данная закладка не существует." Если шаблон с закладками не первый из выбранных, то все нормально работает. smile 
Код

'...
Set objDocument = gobjWord.Documents.Add("путь")
' если объект ещё не создавали 
If boolDoc2Not  Then
     Set objDocument2 = gobjWord.Documents.Add
     boolDoc2Not = False
End If
         
...
objDocument.Activate  
' если заклака существует, то... бла-бла-бла
If findBookmark("zakladka_konkurs_ne_sost", objDocument) Then
                 objDocument.Application.Selection.Goto What:=wdGoToBookmark, Name:="zakladka_konkurs_ne_sost"
                 objDocument.Application.Selection.Delete Unit:=wdCharacter, Count:=1
End If
'...
objDocument.Select                                        'выделяем
objDocument.Application.Selection.Copy         ' копируем
objDocument2.Activate                                    ' активируем второй документ

' после первого копирования вставляем Разрыв (новый раздел с новой страницы)
If boolnoFirstDoc Then
      objDocument2.Application.Selection.InsertBreak wdSectionBreakNextPage 'Type:=wdPageBreak
End If
      ' вставляем выделенное в новый документ
      objDocument2.Application.Selection.PasteAndFormat (wdFormatOriginalFormatting)
      boolnoFirstDoc = True
End If
'...


Вставил строчку objDocument.Activate  и все заработало... smile 

Это сообщение отредактировал(а) ezhikov - 13.10.2008, 16:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.