Автор створено

Може виникнути ситуація, що потрібно розділити багатосторінковий документ на окремі документи. Наприклад, кожна сторінка несе окрему інформацію, а таких десятки чи сотні.

Примітка. Якщо для вас потрібно розділити інформацію в документі, яка займає 1,5, 2 або більшу кількість сторінок, то спосіб не допоможе. Запропонований макрос розділяє лише по 1 сторінці.

Алгоритм роботи:

1. Скопіювати багатосторінковий документ, який потрібно розділити в окрему папку. Відкрити його. Далі: «Вид → Макросы → Макросы».

2. Якщо у вас до цього часу не було макросів й у вікні, яке відкриється вони не відображаються, то потрібно натиснути «Создать». Якщо макроси вже присутні, то потрібно виділити будь-який з них та натиснути «Изменить» або натиснути сполучення клавіш Alt+F11. Запуститься вікно програми Microsoft Visual Basic.

3. Скопіювати наступний код макроса:
Sub РозбитиДокументНаСторінки()
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

4. Знайти де закінчується останній макрос (якщо поле пусте, то просто вставити скопійований код нашого макроса) та вставити скопійований код. Після цього можна закрити вікно Microsoft Visual Basic.

Стаття по темі: «Макрос для заміни малої букви першого слова на велику (зміна регістру)»

5. Далі перейти у «Вид → Макросы → Макросы» та знайти щойно доданий (ім’я: РозбитиДокументНаСторінки), виділити його й натиснути на кнопку «Выполнить».

6. Після виконання команд ваш документ буде розділений посторінково (кожна сторінка на окремому документі). Всі документи будуть додані у папку основного документа та будуть мати його назву + номер сторінки (дивіться знімок екрана нижче).

Макрос можна перейменувати. Назва макроса знаходиться на початку й виділена напівжирним: Sub РозбитиДокументНаСторінки(). Знайдіть її в коді, який показаний вище та перейменуйте якщо потрібно. Ім’я не повинне містити пробілів.

Макрос взятий із сайту http://wordexpert.ru.