0 / 0 / 0 Регистрация: 19.09.2014 Сообщений: 6 |
|
1 |
|
03.10.2014, 14:03. Показов 4680. Ответов 7
Доброго времени суток форумчане! Нашел на форуме тему » Объединить заданные пользователем открытые файлы word в один файл». «Апострофф» предложил отличный код, который сводит в один word-кий файл все закрытые файлы одного каталога. Код работает. Как доработать код, что бы после объединения, удалялись все таблицы с объединенного файла. Заранее всем спасибо.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
03.10.2014, 14:03 |
7 |
0 / 0 / 0 Регистрация: 19.09.2014 Сообщений: 6 |
|
03.10.2014, 16:29 [ТС] |
3 |
«Апострофф» доброго времени суток! Спасибо за подсказки. «Объединить закрытые файлы word одного каталога в один файл» работает, но таблицы в колонтитулах не убирает. Как удалить и колонтитулы? Спасибо.
0 |
0 / 0 / 0 Регистрация: 19.09.2014 Сообщений: 6 |
||
06.10.2014, 07:51 [ТС] |
4 |
|
Доброго времени суток! Задаю папку и пытаюсь открыть файлы, но что то не так. Как подправить код, что бы выбирал папку вне зависимости, где находится файл объединения. Спасибо Вложения
0 |
shanemac51 Модератор 11343 / 4661 / 749 Регистрация: 07.08.2010 Сообщений: 13,512 Записей в блоге: 4 |
||||
06.10.2014, 08:20 |
5 |
|||
0 |
0 / 0 / 0 Регистрация: 19.09.2014 Сообщений: 6 |
|
06.10.2014, 09:20 [ТС] |
6 |
Доброе утро shanemac51! Спасибо за отзывчивость. При выполнении макроса, я выбираю папку и файлы объединяются. Когда я выбираю другую папку то файлы не объединяются а загружаются предыдущие.
0 |
Заблокирован |
||||
06.10.2014, 10:13 |
7 |
|||
Сообщение было отмечено nwcop как решение Решение
1 |
0 / 0 / 0 Регистрация: 19.09.2014 Сообщений: 6 |
|
06.10.2014, 13:12 [ТС] |
8 |
Добрый день Апострофф! Спасибо огромное. Протестировали все работает.
0 |
Dim Ozerov Пользователь Сообщений: 99 |
Здравствуйте. Помогите решить вопрос. Как макросом провести объединение doc файлов из столбца в определенном порядке ? Прикрепленные файлы
|
Sanja Пользователь Сообщений: 14838 |
Как раз пример кода работы с Word-документами из Excel. Запишите макрорекордером (в Word!) нужные действия с документами и объедините/переработайте с примером по ссылке КАК ИЗ EXCEL ОБРАТИТЬСЯ К ДРУГОМУ ПРИЛОЖЕНИЮ Согласие есть продукт при полном непротивлении сторон. |
Dim Ozerov Пользователь Сообщений: 99 |
Sanja, в статье приводится как я понял — вставка из экселя в ворд или из ворда в эксель. |
Sanja Пользователь Сообщений: 14838 |
#4 11.08.2017 10:41:05
Я же Вам написал
Согласие есть продукт при полном непротивлении сторон. |
||||
Dim Ozerov Пользователь Сообщений: 99 |
#5 11.08.2017 11:02:01 Sanja, в ворде макрорекордер как-то по-другому работает.
Видимо потому что Selection.Copy — надо как-то задавать — выделение по странице или весь документ. |
||
Sanja Пользователь Сообщений: 14838 |
Так у Вас вопрос больше по VBA Word’а чем по Excel. Ищите тематические форумы Согласие есть продукт при полном непротивлении сторон. |
Бахтиёр Пользователь Сообщений: 1930 Excel 365 |
#7 11.08.2017 11:09:57 От Дмитрия (The_Prist)
А тему наверно в курилку |
||
Dim Ozerov Пользователь Сообщений: 99 |
… Изменено: Dim Ozerov — 11.08.2017 11:38:50 |
Dim Ozerov Пользователь Сообщений: 99 |
Бахтиёр, а не подскажете — как работает этот скрипт. Подключена библиотека Microsoft Word 15.0 Object Library |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#10 11.08.2017 13:05:14
Dim Ozerov, Вам нужен макрос в Word? |
||
RAN Пользователь Сообщений: 7091 |
#11 11.08.2017 14:19:14
|
||
Megamen2 Пользователь Сообщений: 101 |
RAN, макрос в целом работает, то есть группирует все вордовские файлы в один документ — под названием «Документ1». Выдает в этом месте ошибку : » Run-time error `438` Object doesn`t support this property or method « Изменено: Megamen2 — 11.08.2017 15:31:08 |
RAN Пользователь Сообщений: 7091 |
Вариантов, собственно, два. |
Megamen2 Пользователь Сообщений: 101 |
#14 11.08.2017 16:36:29
Метод SaveAs — работает Изменено: Megamen2 — 11.08.2017 16:38:16 |
||
Dim Ozerov Пользователь Сообщений: 99 |
#15 11.08.2017 16:43:59 RAN, все заработало. |
05.04.16 — 11:17
Можно ли программно объединить несколько word’ских файла?
1 — 05.04.16 — 11:18
Наверняка
2 — 05.04.16 — 11:23
(0) Объединяйте, пожалуйста. Никто не возражает.
3 — 05.04.16 — 11:29
Как?
4 — 05.04.16 — 11:30
(3)Открой учебник по офису
5 — 05.04.16 — 11:32
(4) в учебнике по офису написано как в 1С склеить два файла ворда?
6 — 05.04.16 — 11:33
(5) Ты не поверишь )
7 — 05.04.16 — 11:40
(0) file3.doc = file1.doc + file2.doc;
Шутка.
8 — 05.04.16 — 11:42
(0) открываешь файл.
Делаешь выделить все и копируешь в новый файл.
Со вторым файлом также.
9 — 05.04.16 — 11:44
Возможно, надо посмотреть команды (выдернул из макроса):
Selection.WholeStory
Selection.Copy
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
10 — 05.04.16 — 11:44
(8) «программно объединить» — где программа?
11 — 05.04.16 — 11:46
(10) 1С пойдет
12 — 05.04.16 — 11:54
(0)макросом пишется так:
Selection.InsertFile FileName:=»1.doc», Range:=»», ConfirmConversions:= _
False, Link:=False, Attachment:=False
Адаптируй в 1С:-)
13 — 05.04.16 — 12:01
(12) так не интересно. Давай полное законченное решение )
14 — 05.04.16 — 12:03
(13)полное и законченное стоит полый кошелек денюх:-)
15 — 05.04.16 — 12:04
(14) ах ты жадный 1Сник )))
16 — 05.04.16 — 12:07
(15)Надо же поддерживать имидж программиста 1С!
Еще вот поднатужусь и стану тупым и ленивым!:-)
17 — 05.04.16 — 12:07
EvilMacros = «Sub SuperMacros()
|Selection.InsertFile FileName:=»file1.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file2.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file3.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|Selection.InsertFile FileName:=»file4.docx», _
|Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
|End Sub»;
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
Count = VBComponents.Count();
VBComponents.Add(1);
VBComponents.Item(Count + 1).CodeModule.I_nsertLines(1, EvilMacros);
Word.Application.Run(SuperMacros»);
Word.Quit();
Word = Неопределено;
18 — 05.04.16 — 12:08
(17)Ты все испортил!!!(С)
19 — 05.04.16 — 12:10
(18) и не говори ))
20 — 05.04.16 — 12:30
(17) спасибо. Попробую.
Хочу из 1С в один файл объединить несколько таблиц с разной ориентацией.
21 — 05.04.16 — 12:32
(17) Извращение. Мало кто программный доступ к проекту ВБА разрешает.
22 — 05.04.16 — 12:38
(21) ага.
{Форма.Форма.Форма(446)}: Ошибка при получении значения атрибута контекста (VBProject)
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
по причине:
Произошла исключительная ситуация (Microsoft Word): Отсутствует доверие к программируемому доступу к проекту Visual
23 — 05.04.16 — 12:44
(22) ну да разрешить )))
а иначе — юзайте MS Word Merge Tool. Но он платный.
24 — 05.04.16 — 12:57
(23) написать по-человечески тот же макрос не варик?
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
Word.ActiveDocument.Selection.InsertFile FileName:=»file1.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file2.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file3.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.ActiveDocument.Selection.InsertFile FileName:=»file4.docx», _
Word.ActiveDocument.Range:=»», ConfirmConversions:=False, Link:=False, Attachment:=False
Word.Quit();
Word = Неопределено;
и я даже не говорю о том, что сам по себе макрос не особо хороший, хотя рабочий.
25 — 05.04.16 — 12:58
(24) может и варик ).
Мой вариант был симбиозом двух рецептов )
26 — 05.04.16 — 12:59
точнее
Word = Новый COMОбъект(«Word.Application»);
Word.Documents.Add();
Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False)
Word.ActiveDocument.Selection.InsertFile(«file2.docx», «», False, False, False)
Word.Quit();
Word = Неопределено;
27 — 05.04.16 — 13:01
(26) то-то я думаю, что за странный синтаксис:
Word.ActiveDocument.Selection
Word.ActiveDocument.Range
28 — 05.04.16 — 13:16
(26) не работает что-то метод Selection
тут
Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False):
Метод объекта не обнаружен (Selection)
29 — 05.04.16 — 13:29
Так работает:
MSWord = Новый COMОбъект(«Word.Application»);
Документ = MSWord.Application.Documents.Add();
//Документ.Activate();
MSWord.Application.Selection.InsertFile(«W:ТабДок1.docx»,,, Ложь);
MSWord.Application.Selection.InsertFile(«W:ТабДок4.docx»,,, Ложь);
MSWord.Application.Visible = Истина;
MSWord.Activate();
30 — 05.04.16 — 13:42
Только при объединении двух вордовских файлов не сохраняется их ориентация:
1-й стоит Портрет,
2-й — Ландшафт.
Выводит все листы в портретной ориентации.
31 — 05.04.16 — 13:43
(30) Разрыв раздела вставляй.
32 — 05.04.16 — 14:05
(31) разрыв страницы макросом делается так:
Selection.InsertBreak Type:=wdPageBreak
а в 1С как сделать?
Пробую так:
MSWord.Application.Selection.InsertBreak.Type=7;
выдает ошибку «Поле объекта не обнаружено (InsertBreak)»
33 — 05.04.16 — 14:19
(32) А так? MSWord.Application.Selection.InsertBreak(7)
Только 7 — это вроде разрыв страницы, а тебе нужен разрыв раздела wdSectionBreakNextPage.
34 — 05.04.16 — 14:21
(33) Вместо 7 это 2 .
35 — 05.04.16 — 14:23
(33) (34) да так работает, спасибо. Но ориентацию ставит всё равно одну, первую (портрет).
36 — 05.04.16 — 14:24
(35) Потому что надо разрыв раздела ставить (может я с номером параметра ошибся). В ворде в разных разделах может быть разная ориентация, а на разных страницах одного раздела — нет.
37 — 05.04.16 — 14:25
(36) я так делал:
MSWord.Application.Selection.InsertBreak(2)
38 — 05.04.16 — 14:25
MSWord = Новый COMОбъект(«Word.Application»);
Документ = MSWord.Application.Documents.Add();
MSWord.Application.Selection.InsertFile(«W:ТабДок1.docx»,,, Ложь);
MSWord.Application.Selection.InsertBreak(2);
MSWord.Application.Selection.InsertFile(«W:ТабДок5.docx»,,, Ложь);
39 — 05.04.16 — 14:33
(38) Да, проверил. InsertFile — просто вставляет текст из файла без сохранения ориентации. Может там параметры какие есть, навскидку попробовал параметры ConfirmConversions.
40 — 05.04.16 — 14:33
+(39) Не помогло.
41 — 05.04.16 — 14:39
Сделал так: нажал запись макроса, выделил раздел, нажал кнопку параметры и установил ориентацию, получил такой макрос:
Sub Макрос1()
‘
‘ Макрос1 Макрос
‘
‘
With Selection.PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientLandscape
.TopMargin = CentimetersToPoints(3)
.BottomMargin = CentimetersToPoints(1.5)
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(1.25)
.FooterDistance = CentimetersToPoints(1.25)
.PageWidth = CentimetersToPoints(29.7)
.PageHeight = CentimetersToPoints(21)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = False
.TwoPagesOnOne = False
.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1
.GutterPos = wdGutterPosLeft
End With
End Sub
Как вот его переделать для 1С вот в чем вопрос.
42 — 05.04.16 — 14:40
(40) А вот если из файла 2 копипастить (Ctrl+A, Сtrl+С) и вставлять в новый раздел файла 1, то ориентация тоже копируется
43 — 05.04.16 — 14:44
Ура заработало:
MSWord.Application.Selection.PageSetup.Orientation = 1;
44 — 05.04.16 — 14:48
(43) Ну если ты заранее знаешь, в каком файле какая ориентация — то пойдёт. А иначе придётся извращаться. Или если в добавляемом файле будет несколько разделов с разной ориентацией.
45 — 05.04.16 — 14:48
(41) Да хз в чем там вопрос. Объктная модель у ворда такая:
Application (окно приложений с конпками меню, вобщем сам ворд)
v
ActiveDocument (текущий открытый документ ворда)
v
Range (область в документе. Свойство Selection возвращает Range, который выделил пользователь, ессно при работе с COM Selection лучше не пользоваться, а использовать непосредственно Range).
Еще у Document есть коллекции Paragraphs (абзацы) и Words (отдельные слова). Элементы этих коллекций тоже имеют свойство Range.
46 — 05.04.16 — 14:52
(44) да это известно.
47 — 05.04.16 — 15:00
Еще проблема:
листы, у которых ориентация ландшафт широкие и при сохранении в ворд, получаю ошибку:
«Ошибка экспорта табличного документа: Превышена допустимая ширина документа Word 2007»
А ворде параметр — «по ширине листа не рабоает» FitToPagesWide
В экселе это не сделаешь, нет метода InsertFile.
Остается выравнивать по вертикале, если не влазит, то ставить верикальный разделитель.
Всё это делать с помощью методов ПроверитьПрисоединение() и ВывестиВертикальныйРазделительСтраниц().
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 1 ]
1 11.08.2015 11:38:05
- Alex_Gur
- Модератор
- Неактивен
- Откуда: Москва
- Зарегистрирован: 28.07.2011
- Сообщений: 2,758
- Поблагодарили: 492
Тема: Объединение группы файлов Word с помощью макроса
В ряде случаев бывает необходимо быстро объединить несколько файлов Word в определенной последовательности.
Для выполнения такого объединения в пользовательском режиме используется команда Текст из файла (вкладка Главная – группа Текст – Объект – Текст из файла).
Однако, если файлов много, то выполнить большое количество подобных операций бывает довольно затруднительно.
В этом случае на помощь приходит макрос:
Sub UniteFiles01()
Dim path1 As String
path1 = ActiveDocument.Path & ""
Selection.InsertFile filename:=path1 & "File 01.doc", Range:="", ConfirmConversions:= _
False, Link:=False, Attachment:=False
Selection.TypeParagraph
Selection.InsertFile filename:=path1 & "File 02.doc", Range:="", ConfirmConversions:= _
False, Link:=False, Attachment:=False
Selection.TypeParagraph
Selection.InsertFile filename:=path1 & "File 03.doc", Range:="", ConfirmConversions:= _
False, Link:=False, Attachment:=False
Selection.TypeParagraph
' (Повторите нужное количество раз)
End Sub
Сводный файл предварительно должен быть сохранен в ту же папку, что и объединяемые файлы. Он должен быть открыт и являться активным.
Вместо выражений File 01.doc, File 02.doc, File 03.doc и т.д. указываются реальные наименования объединяемых файлов в нужной последовательности.
(Для более быстрого получения перечня файлов в текущей папке можно предварительно использоваться команда Windows (скрипт)
Желаю всем успешной работы!
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк — 41001162202962; на WebMoney — R581830807057.
Сообщений [ 1 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- вирутальное объединение файлов
- Создание гиперссылки с помощью макроса Word
- Импорт переменной, связь Word и Excel с помощью макроса
- Сохранение текста в FB2 c помощью макроса
- Перебор абзацев с помощью макроса
- Заполнить выпадающий список с помощью макроса
- Форматирования текста в Worde с помощью макроса
- Выпадающий список наполнить с помощью макроса
Объединение группы файлов Word с помощью макроса
Для всех пользователей текстового редактора Microsoft Word будет полезно познакомиться со встроенными функциями и настройками этой программы. Наш сайт о Microsoft Office Word даст ответ про: excel текст в нижний регистр.
На форуме сайта Ворд Эксперт вам предложат различные варианты настроек, в зависимости от поставленных задач. На портале о Microsoft Office Word вы узнаете про: антоним к слову звильнити.
Так существуют схемы для быстрого удаления лишних пробелов из текста, переформатирования и оформления в одном стиле различных кусков, работы с таблицами и многого другого. На портале о Microsoft Office Word вы узнаете про: рисунки для границы для word.
Здесь вы найдете шаблоны для часто повторяющихся схем оформления текста, макросы практически для любых операций, готовые решения и пошаговые инструкции для написания. Наш сайт о Microsoft Office Word даст ответ про: границы для ms office 2010.
Также вы можете оставить заявку на любую работу, связанную с Вордом.
Как объединить несколько файлов Ворд в один
На чтение 4 мин Просмотров 269
Иногда у нас возникает необходимость объединить несколько файлов Ворд в один. На той странице мы рассмотрим два способа, как это можно сделать. Но прежде, чем приступить к объединению нескольких документов в один, убедитесь, что все документы лежат у вас в одной папке. Сделали? Тогда приступим.
Объединяем документы с помощью «Текст из файла»
Этот способ поможет вам соединить несколько файлов в один, но знайте, что при этом будет потеряно форматирование в готовом документе.
Шаг 1.
Создайте новый пустой документ: иконка «Офиса», затем «Создать».
Шаг 2.
Перейдите на вкладку «Вставка», найдите в разделе «Текст» кнопку «Объект» и нажмите на стрелочку вниз.
Шаг 3.
В диалоговом окне выберите «Текст из файла».
Шаг 4.
Выберите все файлы, которые вы желаете объединить в один.
Чтобы выбрать все сразу файлы нажмите CTRL + A. Если вы желаете выбрать несколько файлов подряд, то выделите первый из них, затем зажмите клавишу SHIFT и выберите последний — промежуточные выделяться автоматически. Если вам нужно выбрать, к примеру, все нечетные файлы, то выделяйте их левой кнопкой мыши, держа клавишу CTRL.
Шаг 5.
После того, как файлы выделены, нажмите на кнопку «Вставить», и документы отправятся в созданный вами документ.
Объединяем документы с помощью скрипта VBA
Прежде чем приступить к запуску следующего скрипта, прошу вас, проделайте эти инструкции:
- Соберите все документы, которые вы будете объединять в одну папку и пронумеруйте их в том порядке, в котором они должны быть. Например так: часть 1, часть 2 и т.д. Необходимо это сделать для того, чтобы в процессе объединения документов не был перепутан материал.
- Откройте документ с тем материалом, который будет размещен самый первым, и только после этого приступайте к запуску скрипта.
Шаг 1.
В окне Ворда нажмите на сочетание клавиш ALT + F11 для запуска Visual Basic Application.
Шаг 2.
В меню «Insert» — «Module». Теперь скопируйте код скрипта и вставьте его в окне VBA.
Шаг 3.
Запустите выполнение кода, нажав F5 на клавиатуре, либо на панели на зеленый треугольник.
VBA скрипт, чтобы объединить несколько файлов Word в один.
Sub MergeDocuments() Application.ScreenUpdating = False MyPath = ActiveDocument.Path MyName = Dir(MyPath & "" & "*.doc") i = 0 Do While MyName <> "" If MyName <> ActiveDocument.Name Then Set wb = Documents.Open(MyPath & "" & MyName) Selection.WholeStory Selection.Copy Windows(1).Activate Selection.EndKey Unit:=wdLine Selection.TypeParagraph Selection.Paste i = i + 1 wb.Close False End If MyName = Dir Loop Application.ScreenUpdating = True End Sub
Эти способы справедливы для разных версий Microsoft Word 2007, 2010, 2013, 2016, 2019.
Удачи в изучении. Переходите к другим урокам.
Немного юмора:
– Почему ваш антивирус так долго фильм проверяет?
– Он его смотрит.