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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2010, 17:23   #1
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию "Слепить" несколько документов в один

Есть N документов. У каждого из документов может быть разное количество объектов (текст, шейпы), разное количество страниц, разные маргины на каждой странице, разный размер каждой отдельной страницы. Как из них создать 1 документ?
Diego__ вне форума Ответить с цитированием
Старый 13.02.2010, 17:56   #2
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Александр, Вы будете смеяться, но ответ традиционный:
добавить поля INCLUDETEXT и обновить или метод Selection.InsertFile
Aent вне форума Ответить с цитированием
Старый 13.02.2010, 19:10   #3
Diego__
Форумчанин
 
Регистрация: 12.08.2009
Сообщений: 118
По умолчанию

Aent, Вы дважды правы
Наверное, я сложно смотрю на вещи... искал в Document.Merge, Application.MergeDocuments, дошел до Start Mail Merge в закладке Mailings.
Спасибо за ответ.
На С++ реализовал так
Код:
     std::vector<std::wstring> manyDocuments;

     manyDocuments.push_back(L"C:/Jackson.docx");
     manyDocuments.push_back(L"C:/commonwordsbingocards.docx");
     manyDocuments.push_back(L"C:/A_University_Course_in_English_Grammar__NEW_.docx");
     manyDocuments.push_back(L"C:/0ggender.docx");


     for (int i = 0; i < manyDocuments.size(); ++i)
     {
          CComVariant type(Word::wdFieldIncludeText);

          std::wstringstream stream;
          stream<<L"\""<<manyDocuments[i].c_str()<<"\" \\* MERGEFORMAT";
          CComVariant text(stream.str().c_str());

          Word::RangePtr range = mainDocument->GetParagraphs()->GetLast()->GetRange();
          Word::FieldPtr field = mainDocument->Fields->Add(range, &type, &text);

          VARIANT_BOOL varBool = field->Update();
          if (varBool == 0)
          {
               // что то пошло не так...
          }
          else
               if (E_FAIL == field->Unlink())
               {
                    // что то пошло не так...
               }

          CComVariant variant(Word::wdSectionBreakNextPage);

          mainDocument->Range()->InsertParagraphAfter();
          mainDocument->Paragraphs->Last->Range->InsertBreak(&variant);
     }
Diego__ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать "Несколько значений для столбца подстановок" lamerk Microsoft Office Access 2 30.11.2009 20:41
Связь "один ко многим"? M17 SQL, базы данных 5 21.10.2009 15:07
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50