![]() |
#1
|
|||
|
|||
![]()
Hello there!
I have a little problem for which I would like you guys to help me: I want to split a long document into multiple documents, each one named after a certain text from inside of it. For example: "How old are you? I'm X years old. Where're you from? I'm from yyy." And i would like to name each document after the question. Bellow i pasted the code for splitting the document and save it with a certain name (here it's "TEXT FROM INSIDE"), but i want to save them with different names. Code:
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") ActiveDocument.SaveAs2 FileName:= _ "TEXT FROM INSIDE" _ , FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", _ AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _ :=False, SaveAsAOCELetter:=False, CompatibilityMode:=14 '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 Last edited by macropod; 04-12-2017 at 02:25 PM. Reason: Added code tags |
Tags |
vba microsoft word 2013 |
Thread Tools | |
Display Modes | |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
jc491 | Word VBA | 7 | 01-21-2022 11:04 AM |
![]() |
megatronixs | Word VBA | 9 | 09-05-2020 02:29 PM |
Vba code to save document as pdf using document property text and rename folder. | staicumihai | Word VBA | 1 | 12-21-2015 07:39 AM |
How to save active document to SharePoint document library | Rose roon | Word VBA | 9 | 09-22-2015 10:53 PM |
![]() |
quickwin | Word | 3 | 07-09-2013 10:20 PM |