Объединение файлов docx #769289


#0 by idw
Можно ли программно объединить несколько word'ских файла?
#1 by МимохожийОднако
Наверняка
#2 by DDwe
Объединяйте, пожалуйста. Никто не возражает.
#3 by idw
Как?
#4 by МимохожийОднако
Открой учебник по офису
#5 by idw
в учебнике по офису написано как в 1С склеить два файла ворда?
#6 by DDwe
Ты не поверишь )
#7 by Мэс33
Шутка.
#8 by Мэс33
открываешь файл. Делаешь выделить все и копируешь в новый файл. Со вторым файлом также.
#9 by Мэс33
Возможно, надо посмотреть команды (выдернул из макроса): Selection.WholeStory Selection.Copy Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
#10 by DDwe
"программно объединить" - где программа?
#11 by idw
1С пойдет ;)
#12 by Рэйв
макросом пишется так:
#13 by Мэс33
так не интересно. Давай полное законченное решение )
#14 by Рэйв
полное и законченное стоит полый кошелек денюх:-)
#15 by Мэс33
ах ты жадный 1Сник )))
#16 by Рэйв
Надо же поддерживать имидж программиста 1С! Еще вот поднатужусь и стану тупым и ленивым!:-)
#17 by Мэс33
#18 by Рэйв
Ты все испортил!!!(С) :-)
#19 by Мэс33
и не говори ))
#20 by idw
спасибо. Попробую. Хочу из 1С в один файл объединить несколько таблиц с разной ориентацией.
#21 by b_ru
Извращение. Мало кто программный доступ к проекту ВБА разрешает.
#22 by idw
ага. {Форма.Форма.Форма}: Ошибка при получении значения атрибута контекста (VBProject)     VBComponents = Word.ActiveDocument.VBProject.VBComponents; по причине: Произошла исключительная ситуация (Microsoft Word): Отсутствует доверие к программируемому доступу к проекту Visual
#23 by Мэс33
ну да разрешить ))) а иначе - юзайте MS Word Merge Tool. Но он платный.
#24 by b_ru
написать по-человечески тот же макрос не варик? и я даже не говорю о том, что сам по себе макрос не особо хороший, хотя рабочий.
#25 by Мэс33
может и варик ). Мой вариант был симбиозом двух рецептов )
#26 by b_ru
точнее
#27 by Мэс33
то-то я думаю, что за странный синтаксис: Word.ActiveDocument.Selection Word.ActiveDocument.Range
#28 by idw
не работает что-то метод Selection тут Word.ActiveDocument.Selection.InsertFile("file1.docx", "", False, False, False): Метод объекта не обнаружен (Selection)
#29 by idw
Так работает:
#30 by idw
Только при объединении двух вордовских файлов не сохраняется их ориентация: 1-й стоит Портрет, 2-й - Ландшафт. Выводит все листы в портретной ориентации.
#31 by Fish
Разрыв раздела вставляй.
#32 by idw
разрыв страницы макросом делается так: а в 1С как сделать? Пробую так: MSWord.Application.Selection.InsertBreak.Type=7; выдает ошибку "Поле объекта не обнаружено (InsertBreak)"
#33 by Fish
А так? MSWord.Application.Selection.InsertBreak Только 7 - это вроде разрыв страницы, а тебе нужен разрыв раздела wdSectionBreakNextPage.
#34 by Fish
Вместо 7 это 2 .
#35 by idw
да так работает, спасибо. Но ориентацию ставит всё равно одну, первую (портрет).
#36 by Fish
Потому что надо разрыв раздела ставить (может я с номером параметра ошибся). В ворде в разных разделах может быть разная ориентация, а на разных страницах одного раздела - нет.
#37 by idw
я так делал: MSWord.Application.Selection.InsertBreak
#39 by Fish
Да, проверил. InsertFile - просто вставляет текст из файла без сохранения ориентации. Может там параметры какие есть, навскидку попробовал параметры ConfirmConversions.
#40 by Fish
+ Не помогло.
#41 by idw
Сделал так: нажал запись макроса, выделил раздел, нажал кнопку параметры и установил ориентацию, получил такой макрос: ' Как вот его переделать для 1С вот в чем вопрос.
#42 by Fish
А вот если из файла 2 копипастить (Ctrl+A, Сtrl+С) и вставлять в новый раздел файла 1, то ориентация тоже копируется :)
#43 by idw
Ура заработало:
#44 by Fish
Ну если ты заранее знаешь, в каком файле какая ориентация - то пойдёт. А иначе придётся извращаться. Или если в добавляемом файле будет несколько разделов с разной ориентацией.
#45 by b_ru
Да хз в чем там вопрос. Объктная модель у ворда такая: Application (окно приложений с конпками меню, вобщем сам ворд) v ActiveDocument (текущий открытый документ ворда) v Range (область в документе. Свойство Selection возвращает Range, который выделил пользователь, ессно при работе с COM Selection лучше не пользоваться, а использовать непосредственно Range). Еще у Document есть коллекции Paragraphs (абзацы) и Words (отдельные слова). Элементы этих коллекций тоже имеют свойство Range.
#46 by idw
да это известно.
#47 by idw
Еще проблема: листы, у которых ориентация ландшафт широкие и при сохранении в ворд, получаю ошибку: "Ошибка экспорта табличного документа: Превышена допустимая ширина документа Word 2007" А ворде параметр - "по ширине листа не рабоает" FitToPagesWide
#48 by idw
В экселе это не сделаешь, нет метода InsertFile. Остается выравнивать по вертикале, если не влазит, то ставить верикальный разделитель. Всё это делать с помощью методов ПроверитьПрисоединение и ВывестиВертикальныйРазделительСтраниц.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С