Объединение word файлов в один макрос

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

Доброго времени суток! Задаю папку и пытаюсь открыть файлы, но что то не так. Как подправить код, что бы выбирал папку вне зависимости, где находится файл объединения. Спасибо

Вложения

Тип файла: rar 1.rar (21.3 Кб, 32 просмотров)



0



shanemac51

Модератор

Эксперт MS Access

11343 / 4661 / 749

Регистрация: 07.08.2010

Сообщений: 13,512

Записей в блоге: 4

06.10.2014, 08:20

5

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Sub mmCommandButton1_Click()
'' немного отладки ввела, у вас не улалялась кнопка, с которой вызывался макрос
''------------------------------
''ctrl+f8+выполнить
 
Dim strFile As String
With Application.FileDialog(msoFileDialogFolderPicker)
    If Len(sPath) > 0 Then
      .InitialFileName = sPath
    End If
    .ButtonName = "Выбрать"
    .Title = "Выберите исходную папку"
    If .Show Then
    ''ThisDocument.Tables(1).Cell(1, 1).Range.Text = .SelectedItems(1)
    Else '"" & sMask
    End If
End With
  
strFile = Dir(strFolder & "*.doc")
Do While strFile <> ""
Debug.Print strFile
Selection.InsertFile strFolder & strFile
strFile = Dir
Loop
 
    Dim tbl As Table, j1
    Debug.Print
    j1 = Word.ActiveDocument.Tables.Count
    For Each tbl In ActiveDocument.Tables
    j1 = j1 - 1
    Debug.Print "*"; j1;
        tbl.Delete
    Next
 
    Dim Sha As ShapeRange
    ActiveDocument.Select
    For Each Sha In Selection.ShapeRange
        Sha.Delete
    Next
 
End Sub



0



0 / 0 / 0

Регистрация: 19.09.2014

Сообщений: 6

06.10.2014, 09:20

 [ТС]

6

Доброе утро shanemac51! Спасибо за отзывчивость. При выполнении макроса, я выбираю папку и файлы объединяются. Когда я выбираю другую папку то файлы не объединяются а загружаются предыдущие.



0



Апострофф

Заблокирован

06.10.2014, 10:13

7

Лучший ответ Сообщение было отмечено nwcop как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
OPTION EXPLICIT'!!!!!!!!!!!!!!!
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
Private Sub CommandButton1_Click()
Dim strFile As String, strFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
'    If Len(sPath) > 0 Then
'      .InitialFileName = sPath
'    End If
    .ButtonName = "Выбрать"
    .Title = "Выберите исходную папку"
    If .Show Then 
      strFolder = .SelectedItems(1) 'ThisDocument.Tables(1).Cell(1, 1).Range.Text = .SelectedItems(1) Else '"" & sMask
    ELSE
      EXIT SUB
    ENDIF
End With
  
strFile = Dir(strFolder & "*.doc")
Do While strFile <> ""
Selection.InsertFile strFolder & "" & strFile
strFile = Dir
Loop
 
    Dim tbl As Table
    For Each tbl In ActiveDocument.Tables
        tbl.Delete
    Next
 
    Dim Sha As ShapeRange
    For Each Sha In ActiveDocument.Shapes
        Sha.Delete
    Next
 
End Sub



1



0 / 0 / 0

Регистрация: 19.09.2014

Сообщений: 6

06.10.2014, 13:12

 [ТС]

8

Добрый день Апострофф! Спасибо огромное. Протестировали все работает.



0



 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

Здравствуйте. Помогите решить вопрос.
На листе эксель — в столбце располагаются три адреса файлов doc (три файла 111.doc, 222.doc, 333.doc).

Как макросом провести объединение doc файлов из столбца в определенном порядке ?
(общий файл «Общий.doc», должен сохраниться в ту же папку что и файл с макросом. )  

Прикрепленные файлы

  • 213123.rar (38.07 КБ)

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Как раз пример кода работы с Word-документами из Excel. Запишите макрорекордером (в Word!) нужные действия с документами и объедините/переработайте с примером по ссылке

КАК ИЗ EXCEL ОБРАТИТЬСЯ К ДРУГОМУ ПРИЛОЖЕНИЮ

Согласие есть продукт при полном непротивлении сторон.

 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

Sanja, в статье приводится как я понял — вставка из экселя в ворд или из ворда в эксель.
Я же имел ввиду — создание документа doc, копирование в него файлов doc в нужном порядке, закрытие документа doc.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

#4

11.08.2017 10:41:05

Цитата
Dim Ozerov написал: Я же имел ввиду…

Я же Вам написал

Цитата
Sanja написал: Запишите макрорекордером (в Word!) нужные действия … и объедините/переработайте с примером по ссылке

Согласие есть продукт при полном непротивлении сторон.

 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

#5

11.08.2017 11:02:01

Sanja, в ворде макрорекордер как-то по-другому работает.
Записал макрос в ворде, но он ничего не копирует.

Код
 
Sub Объединение()

    Documents.Add DocumentType:=wdNewBlankDocument
    ActiveDocument.SaveAs FileName:="Общий.doc", FileFormat:=wdFormatDocument, _
         LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False
     RecentFiles(4).Open
    Selection.WholeStory
    Selection.Copy
    Windows("Общий.doc").Activate
    Windows("222.doc").Activate
    ActiveDocument.Close
    RecentFiles(4).Open
    Selection.WholeStory
    Selection.Copy
    Windows("Общий.doc").Activate
    Windows("111.doc").Activate
    ActiveDocument.Close
    RecentFiles(4).Open
    Selection.WholeStory
    Selection.Copy
    Windows("Общий.doc").Activate
    Windows("333.doc").Activate
    ActiveDocument.Close
    ActiveDocument.Save
    ActiveDocument.Close
End Sub

Видимо потому что  Selection.Copy — надо как-то задавать — выделение по странице или весь документ.
Макрорекодер воспринимает  Selection.Copy — как самостоятельное выделение мышью.

 

Sanja

Пользователь

Сообщений: 14838
Регистрация: 10.01.2013

Так у Вас вопрос больше по VBA Word’а чем по Excel. Ищите тематические форумы

Согласие есть продукт при полном непротивлении сторон.

 

Бахтиёр

Пользователь

Сообщений: 1930
Регистрация: 15.01.2016

Excel 365

#7

11.08.2017 11:09:57

От Дмитрия (The_Prist)

Код
Sub MergeFiles()
    Dim avFiles, lr As Long
    Dim docAct As Document, docNow As Document

    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = "*.doc*"
        .AllowMultiSelect = True
        If .Show = False Then Exit Sub
        Set docAct = ActiveDocument
        For lr = 1 To .SelectedItems.Count
            Set docNow = Documents.Open(.SelectedItems(lr))
            docNow.Range.Copy
            docAct.Range(docAct.Range.End - 1).Paste
            docAct.Range(docAct.Range.End - 1).InsertBreak Type:=0
            docNow.Close 0
        Next lr
    End With
End Sub

А тему наверно в курилку

 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

Изменено: Dim Ozerov11.08.2017 11:38:50

 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

Бахтиёр, а не подскажете — как работает этот скрипт.
Он вызывает окошко, где предлагает выбрать word-документ.
Если выбрать какой-либо файл — то макрос открывает этот файл и выдает ошибку (Run-time error `-2147417848 (80010108)` Automation error Вызванный объект был отключен от клиентов)

Подключена библиотека Microsoft Word 15.0 Object Library
В чем может быть ошибка?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#10

11.08.2017 13:05:14

Цитата
Dim Ozerov написал:
Записал макрос в ворде

Dim Ozerov, Вам нужен макрос в Word?

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#11

11.08.2017 14:19:14

Код
Sub мяу()
    Dim wa As Object, wd As Object, wdt As Object
    Dim cel As Range
    Set wa = CreateObject("Word.Application")
    wa.Visible = True
    Set wd = wa.documents.Add
    For Each cel In ThisWorkbook.Sheets(3).Range("D4:D6")
        Set wdt = wa.documents.Open(cel.Value)
        wdt.Range.Copy
        wdt.Close False
        wa.Selection.Paste
        wa.Selection.TypeParagraph

    Next
    wd.SaveAs2 ThisWorkbook.Path & "Мяу.doc", 0
    wd.Close False
    wa.Quit False
    Set wa = Nothing: Set wd = Nothing
End Sub
 

Megamen2

Пользователь

Сообщений: 101
Регистрация: 21.07.2017

RAN, макрос в целом работает, то есть группирует все вордовские файлы в один документ — под названием «Документ1».
Но вот сохранить его как «Мяу.doc» — не может.

Выдает в этом месте ошибку : » Run-time error `438` Object doesn`t support this property or method «
И подсвечивает строчку кода     wd.SaveAs2 ThisWorkbook.Path & «Мяу.doc», 0  

Изменено: Megamen211.08.2017 15:31:08

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Вариантов, собственно, два.
1. Установить Word, где есть метод SaveAs2.
2. Использовать метод SaveAs.

 

Megamen2

Пользователь

Сообщений: 101
Регистрация: 21.07.2017

#14

11.08.2017 16:36:29

Цитата
RAN написал:
2. Использовать метод SaveAs.

Метод SaveAs — работает

Изменено: Megamen211.08.2017 16:38:16

 

Dim Ozerov

Пользователь

Сообщений: 99
Регистрация: 21.07.2017

#15

11.08.2017 16:43:59

RAN, все заработало.
Спасибо за ответ.

   idw

05.04.16 — 11:17

Можно ли программно объединить несколько word’ских файла?

   МимохожийОднако

1 — 05.04.16 — 11:18

Наверняка

   DDwe

2 — 05.04.16 — 11:23

(0) Объединяйте, пожалуйста. Никто не возражает.

   idw

3 — 05.04.16 — 11:29

Как?

   МимохожийОднако

4 — 05.04.16 — 11:30

(3)Открой учебник по офису

   idw

5 — 05.04.16 — 11:32

(4) в учебнике по офису написано как в 1С склеить два файла ворда?

   DDwe

6 — 05.04.16 — 11:33

(5) Ты не поверишь )

   Мэс33

7 — 05.04.16 — 11:40

(0) file3.doc = file1.doc + file2.doc;

Шутка.

   Мэс33

8 — 05.04.16 — 11:42

(0) открываешь файл.

Делаешь выделить все и копируешь в новый файл.

Со вторым файлом также.

   Мэс33

9 — 05.04.16 — 11:44

Возможно, надо посмотреть команды (выдернул из макроса):

Selection.WholeStory

Selection.Copy

Selection.PasteAndFormat (wdUseDestinationStylesRecovery)

   DDwe

10 — 05.04.16 — 11:44

(8) «программно объединить» — где программа?

   idw

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С:-)

   Мэс33

13 — 05.04.16 — 12:01

(12) так не интересно. Давай полное законченное решение )

   Рэйв

14 — 05.04.16 — 12:03

(13)полное и законченное стоит полый кошелек денюх:-)

   Мэс33

15 — 05.04.16 — 12:04

(14) ах ты жадный 1Сник )))

   Рэйв

16 — 05.04.16 — 12:07

(15)Надо же поддерживать имидж программиста 1С!

Еще вот поднатужусь и стану тупым и ленивым!:-)

   Мэс33

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)Ты все испортил!!!(С)

:-)

   Мэс33

19 — 05.04.16 — 12:10

(18) и не говори ))

   idw

20 — 05.04.16 — 12:30

(17) спасибо. Попробую.

Хочу из 1С в один файл объединить несколько таблиц с разной ориентацией.

   b_ru

21 — 05.04.16 — 12:32

(17) Извращение. Мало кто программный доступ к проекту ВБА разрешает.

   idw

22 — 05.04.16 — 12:38

(21) ага.

{Форма.Форма.Форма(446)}: Ошибка при получении значения атрибута контекста (VBProject)

    VBComponents = Word.ActiveDocument.VBProject.VBComponents;

по причине:

Произошла исключительная ситуация (Microsoft Word): Отсутствует доверие к программируемому доступу к проекту Visual

   Мэс33

23 — 05.04.16 — 12:44

(22) ну да разрешить )))

а иначе — юзайте MS Word Merge Tool. Но он платный.

   b_ru

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 = Неопределено;

и я даже не говорю о том, что сам по себе макрос не особо хороший, хотя рабочий.

   Мэс33

25 — 05.04.16 — 12:58

(24) может и варик ).

Мой вариант был симбиозом двух рецептов )

   b_ru

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 = Неопределено;

   Мэс33

27 — 05.04.16 — 13:01

(26) то-то я думаю, что за странный синтаксис:

Word.ActiveDocument.Selection

Word.ActiveDocument.Range

   idw

28 — 05.04.16 — 13:16

(26) не работает что-то метод Selection

тут

Word.ActiveDocument.Selection.InsertFile(«file1.docx», «», False, False, False):

Метод объекта не обнаружен (Selection)

   idw

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();

   idw

30 — 05.04.16 — 13:42

Только при объединении двух вордовских файлов не сохраняется их ориентация:

1-й стоит Портрет,

2-й — Ландшафт.

Выводит все листы в портретной ориентации.

   Fish

31 — 05.04.16 — 13:43

(30) Разрыв раздела вставляй.

   idw

32 — 05.04.16 — 14:05

(31) разрыв страницы макросом делается так:

Selection.InsertBreak Type:=wdPageBreak

а в 1С как сделать?

Пробую так:

MSWord.Application.Selection.InsertBreak.Type=7;

выдает ошибку «Поле объекта не обнаружено (InsertBreak)»

   Fish

33 — 05.04.16 — 14:19

(32) А так? MSWord.Application.Selection.InsertBreak(7)

Только 7 — это вроде разрыв страницы, а тебе нужен разрыв раздела wdSectionBreakNextPage.

   Fish

34 — 05.04.16 — 14:21

(33) Вместо 7 это 2 .

   idw

35 — 05.04.16 — 14:23

(33) (34) да так работает, спасибо. Но ориентацию ставит всё равно одну, первую (портрет).

   Fish

36 — 05.04.16 — 14:24

(35) Потому что надо разрыв раздела ставить (может я с номером параметра ошибся). В ворде в разных разделах может быть разная ориентация, а на разных страницах одного раздела — нет.

   idw

37 — 05.04.16 — 14:25

(36) я так делал:

MSWord.Application.Selection.InsertBreak(2)

   idw

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»,,, Ложь);

   Fish

39 — 05.04.16 — 14:33

(38) Да, проверил. InsertFile — просто вставляет текст из файла без сохранения ориентации. Может там параметры какие есть, навскидку попробовал параметры ConfirmConversions.

   Fish

40 — 05.04.16 — 14:33

+(39) Не помогло.

   idw

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С вот в чем вопрос.

   Fish

42 — 05.04.16 — 14:40

(40) А вот если из файла 2 копипастить (Ctrl+A, Сtrl+С) и вставлять в новый раздел файла 1, то ориентация тоже копируется :)

   idw

43 — 05.04.16 — 14:44

Ура заработало:

MSWord.Application.Selection.PageSetup.Orientation = 1;

   Fish

44 — 05.04.16 — 14:48

(43) Ну если ты заранее знаешь, в каком файле какая ориентация — то пойдёт. А иначе придётся извращаться. Или если в добавляемом файле будет несколько разделов с разной ориентацией.

   b_ru

45 — 05.04.16 — 14:48

(41) Да хз в чем там вопрос. Объктная модель у ворда такая:

Application (окно приложений с конпками меню, вобщем сам ворд)

v

ActiveDocument (текущий открытый документ ворда)

v

Range (область в документе. Свойство Selection возвращает Range, который выделил пользователь, ессно при работе с COM Selection лучше не пользоваться, а использовать непосредственно Range).

Еще у Document есть коллекции Paragraphs (абзацы) и Words (отдельные слова). Элементы этих коллекций тоже имеют свойство Range.

   idw

46 — 05.04.16 — 14:52

(44) да это известно.

   idw

47 — 05.04.16 — 15:00

Еще проблема:

листы, у которых ориентация ландшафт широкие и при сохранении в ворд, получаю ошибку:

«Ошибка экспорта табличного документа: Превышена допустимая ширина документа Word 2007»

А ворде параметр — «по ширине листа не рабоает» FitToPagesWide

В экселе это не сделаешь, нет метода InsertFile.

Остается выравнивать по вертикале, если не влазит, то ставить верикальный разделитель.

Всё это делать с помощью методов ПроверитьПрисоединение() и ВывестиВертикальныйРазделительСтраниц().

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 1 ]

1 11.08.2015 11:38:05

  • Объединение группы файлов Word с помощью макроса
  • 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.

Создайте новый пустой документ: иконка «Офиса», затем «Создать».как объединить несколько документов word в один

Шаг 2.

Перейдите на вкладку «Вставка», найдите в разделе «Текст» кнопку «Объект» и нажмите на стрелочку вниз.
Шаг 3.

В диалоговом окне выберите «Текст из файла».как объединить несколько файлов ворд в один

Шаг 4.

Выберите все файлы, которые вы желаете объединить в один.

Чтобы выбрать все сразу файлы нажмите CTRL + A. Если вы желаете выбрать несколько файлов подряд, то выделите первый из них, затем зажмите клавишу SHIFT и выберите последний — промежуточные выделяться автоматически. Если вам нужно выбрать, к примеру, все нечетные файлы, то выделяйте их левой кнопкой мыши, держа клавишу CTRL.

Шаг 5.

После того, как файлы выделены, нажмите на кнопку «Вставить», и документы отправятся в созданный вами документ.как объединить файлы word в один

Объединяем документы с помощью скрипта VBA

Прежде чем приступить к запуску следующего скрипта, прошу вас, проделайте эти инструкции:

  1. Соберите все документы, которые вы будете объединять в одну папку и пронумеруйте их в том порядке, в котором они должны быть. Например так: часть 1, часть 2 и т.д. Необходимо это сделать для того, чтобы в процессе объединения документов не был перепутан материал.
  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.

Удачи в изучении. Переходите к другим урокам.

Немного юмора:

– Почему ваш антивирус так долго фильм проверяет?
– Он его смотрит.

Понравилась статья? Поделить с друзьями:
  • Объединение word в один документ онлайн
  • Общие сведения об электронных таблицах excel
  • Общие принципы работы с excel
  • Общие принципы использования microsoft word
  • Общие итоги в excel это