Как разделить файл Word на отдельные файлы

Привет, уважаемые читатели. Если у вас есть большой документ, который вам нужно разделить, то давайте узнаем, есть ли какой-нибудь способ его поделить на отдельные файлы. Для этого мы воспользуемся возможностями Visual Basic Application для Ворда. Эта программа использует специальные код, которые диктуют Ворду, что нужно сделать. Итак, приступим.

 

Скрипт, который разделит файл в местах-маркерах

Прежде, чем запускать этот код, нужно подготовить документ к разделению на отдельные файлы.

В тех местах, где файл Word будет разделен на несколько отдельных файлов, мы расставим маркеры в виде «///». Это скажет VBA, что в тех местах, где он встретит /// он поймет, что ему нужно будет дальнейшую часть сохранить в новый файл Word. Смотрите на скриншот, где я отметил маркером то место, где я хочу, чтобы был разделен документ.ворд на отдельные файлы

Этот знак ставится в английской раскладке!

документ Word делим на несколько частей

Новые файлы будут сохранены в папку с оригинальным документом, поэтому, советую тот документ, который вы будете разделять, сохраните в отдельную папку, как на скриншоте.ворд в отдельные документы

В конце документа разделяющий маркер ставить нет смысла, иначе VBA создаст просто пустой файл Word.

Шаг 1. 

В окне Ворда нажмите на сочетание клавиш ALT + F11 для запуска Visual Basic Application.как разделить файл word на отдельные файлы

 

Шаг 2.

В меню «Insert» — «Module». Теперь скопируйте код скрипта (его вы встретите ниже) и вставьте его в окне VBA.как разделить текст в ворде

Шаг 3.

Запустите выполнение кода, нажав F5 на клавиатуре, либо на панели на зеленый треугольник.как в ворде сделать несколько страниц

Этот VBA код разделит документ на отдельные файлы в тех местах, где были установлены маркеры. Выделите его левой кнопкой мыши и скопируйте (правой кнопкой мыши — Копировать).

Sub SplitNotes(delim As String, strFilename As String)
Dim doc As Document
Dim arrNotes
Dim I As Long
Dim X As Long
Dim Response As Integer
arrNotes = Split(ActiveDocument.Range, delim)
Response = MsgBox("This will split the document into " & UBound(arrNotes) + 1 & " sections.Do you wish to proceed?", 4)
If Response = 7 Then Exit Sub
For I = LBound(arrNotes) To UBound(arrNotes)
If Trim(arrNotes(I)) <> «» Then
X = X + 1
Set doc = Documents.Add
doc.Range = arrNotes(I)
doc.SaveAs ThisDocument.Path & "\" & strFilename & Format(X, "000")
doc.Close True
End If
Next I
End Sub
Sub test()
'delimiter & filename
SplitNotes "///", "Notes"
End Sub

А вот результат разделения документа Ворд на отдельные файлы:документ word в отдельные файлы

Скрипт, который разделит документ постранично

Порядок шагов, для запуска скрипта в Word тот же, что и в предыдущем способе. Скопируйте следующий ниже код и запустите его выполнение.

Этот код VBA разделит файл Word постранично, и каждую страницу сохранит в отдельные файлы. Выделите его левой кнопкой мыши и скопируйте (правой кнопкой мыши — Копировать).

Sub SplitIntoPages() 
Dim docMultiple As Document 
Dim docSingle As Document 
Dim rngPage As Range 
Dim iCurrentPage As Integer 
Dim iPageCount As Integer 
Dim strNewFileName As String 
Application.ScreenUpdating = False 'Makes the code run faster and reduces screen _
flicker a bit. 
Set docMultiple = ActiveDocument 'Work on the active document _
(the one currently containing the Selection) 
Set rngPage = docMultiple.Range 'instantiate the range object
iCurrentPage = 1 
'get the document's page count
iPageCount = docMultiple.Content.ComputeStatistics(wdStatisticPages) 
Do Until iCurrentPage > iPageCount 
If iCurrentPage = iPageCount Then 
rngPage.End = ActiveDocument.Range.End 'last page (there won't be a next page) 
Else
'Find the beginning of the next page
'Must use the Selection object. The Range.Goto method will not work on a page
Selection.GoTo wdGoToPage, wdGoToAbsolute, iCurrentPage + 1 
'Set the end of the range to the point between the pages
rngPage.End = Selection.Start 
End If 
rngPage.Copy 'copy the page into the Windows clipboard
Set docSingle = Documents.Add 'create a new document
docSingle.Range.Paste 'paste the clipboard contents to the new document
'remove any manual page break to prevent a second blank
docSingle.Range.Find.Execute Findtext:="^m", ReplaceWith:="" 
'build a new sequentially-numbered file name based on the original multi-paged file name and path
strNewFileName = Replace(docMultiple.FullName, ".doc", "_" & Right$("000" & iCurrentPage, 4) & ".doc") 
docSingle.SaveAs strNewFileName 'save the new single-paged document
iCurrentPage = iCurrentPage + 1 'move to the next page
docSingle.Close 'close the new document
rngPage.Collapse wdCollapseEnd 'go to the next page
Loop 'go to the top of the do loop
Application.ScreenUpdating = True 'restore the screen updating 
'Destroy the objects.
Set docMultiple = Nothing 
Set docSingle = Nothing 
Set rngPage = Nothing 
End Sub

Когда скрипт разделит документ на отдельные файлы, то все они будут сохранены в ту же папку, где находится оригинальный документ.

Ссылка на основную публикацию