|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
Delete last page of .docx and then save as .pdf for all the files in a folder
Currently, I am trying to write something in word VBA to delete the last page for a document and then save it as a pdf before moving onto the next one. The macro runs for about ~15 documents before giving the error runtime error 5904: cannot edit range. This is a little concerning as I have ~350 documents that need to have this done to them.
Does anyone have any ideas on what to do? Code:
Sub ConvertWordsToPdfs() Dim directory As String directory = "C:\Users\kalton\Documents\TEST" ' The starting directory Dim fso, folder, files Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(directory) Set files = folder.files For Each File In files Dim newName As String newName = Replace(File.Path, ".docx", ".pdf") Documents.Open FileName:=File.Path, _ ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", Revert:=False, _ WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _ wdOpenFormatAuto, XMLTransform:="" DeleteLastPage ActiveDocument.ExportAsFixedFormat OutputFileName:=newName, _ ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _ wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _ Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ BitmapMissingFonts:=True, UseISO19005_1:=False ActiveDocument.Close savechanges:=False Next End Sub Sub DeleteLastPage() Dim lngCharacters As Long Dim r As Range With ActiveDocument lngCharacters = .GoTo(wdGoToPage, wdGoToLast).Start Set r = .Range(lngCharacters - 1, .Range.End) r.Delete End With End Sub Last edited by macropod; 01-23-2020 at 09:19 PM. Reason: Added code tags |
#2
|
||||
|
||||
Cross-posted at: ms word - Creating a loop for opening documents, executing macros and then close - Stack Overflow
For cross-posting etiquette, please read: Excelguru Help Site - A message to forum cross posters
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
||||
|
||||
To me, the requirement to remove the last page is a bit complicated.
If the last page is preceded by a hard page break for instance, deleting the last page would retain the last page but clear the content from it (other than an empty paragraph). The same thing would happen if the preceding page ended with a table right at the bottom of the page since a paragraph mark needs to be the final thing in the file. If the last page happened to include a section break, the page setup/headers/footers on preceding pages would potentially change. You could potentially avoid these issues by exporting and specifying the page range to exclude the last page. And then you have the issue of what to do with a single page document...
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Web Page, Filtered. 2010. Save as .docx | JonJacobs | Word | 3 | 12-14-2018 10:38 AM |
Looping through a folder of PDF files and saving them as docx | ballpoint | Word VBA | 5 | 11-22-2018 05:18 AM |
Run Code on all files and save files as .docx | Plokimu77 | Word VBA | 4 | 06-05-2016 04:41 PM |
Macro to change all text color to black in all docx files in a selected folder | joewoods | Word VBA | 13 | 05-16-2016 06:29 PM |
Macro to change/convert/delete txt files in folder+subfolders | NoS | Word VBA | 4 | 03-03-2016 12:10 PM |