#1
|
|||
|
|||
Save pages range as PDF by input box
Hello everyone,
This VBA code export the range of pages in pdf format, but you need to insert the range manually in the VBA editor window for each run of the code which may be annoying Code:
Sub SavePageRangeAsPDF() ActiveDocument.ExportAsFixedFormat _ OutputFileName:=CurrentFolder & "Robert" & ".pdf", _ ExportFormat:=wdExportFormatPDF, _ range:=wdExportFromTo, From:=2, To:=4 End Sub Thanks in advance |
#2
|
||||
|
||||
You cannot use non-contiguous ranges with ExportAsFixedFormat you would need to use the PDF printer driver to achieve that. e.g.
Code:
Sub PrintAsPDF() 'Graham Mayor - https://www.gmayor.com - Last updated - 14 Aug 2021 Dim sPrinter As String Dim sRange As String On Error GoTo lbl_Exit sPrinter = Application.ActivePrinter ActivePrinter = "Microsoft Print to PDF" sRange = InputBox("Enter the range of pages to be printed eg 1" & vbCr & _ "or 1-3" & vbCr & _ "or 1-3,6", "Print Pages") If sRange = "" Then MsgBox "No pages selected!", vbCritical, "Print Pages" GoTo lbl_Exit End If Application.PrintOut FileName:="", _ Range:=wdPrintRangeOfPages, _ Item:=wdPrintDocumentWithMarkup, _ copies:=1, _ Pages:=sRange, _ PageType:=wdPrintAllPages, _ collate:=True, _ Background:=False, _ PrintToFile:=False, _ PrintZoomColumn:=0, _ PrintZoomRow:=0, _ PrintZoomPaperWidth:=0, _ PrintZoomPaperHeight:=0 lbl_Exit: Application.ActivePrinter = sPrinter Exit Sub End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
Quote:
Dear gmayor, I tried to edit your code, in order to save the file automatically under the current folder and name by using the following vars, but I failed (compile error syntax) Code:
Dim CurrentFolder As String Dim FileName As String myPath = ActiveDocument.FullName CurrentFolder = ActiveDocument.Path & "\" FileName = Mid(myPath, InStrRev(myPath, "\") + 1, _ InStrRev(myPath, ".") - InStrRev(myPath, "\") - 1) ...... Application.PrintOut FileName:="FileName", Code:
Sub SavePageRangeAsPDFffffff() Dim sRange As String sRange = InputBox("Enter the range of pages to be printed eg 1-3" & "") If sRange = "" Then MsgBox "No pages selected!", vbCritical, "Print Pages" End If ActiveDocument.ExportAsFixedFormat _ OutputFileName:=CurrentFolder & "Robert" & ".pdf", _ ExportFormat:=wdExportFormatPDF, _ range:=sRange End Sub Thank you again |
#4
|
||||
|
||||
You can't make up your own syntax. The print to PDF does not support file naming from VBA.
You can save a contiguous range using ExportAsFixedFormat (For a single page enter e.g. 2-2 in the input box) e.g. Code:
Sub SavePageRangeAsPDF() Const sPath As String = "C:\Path\" Dim sRange As String sRange = InputBox("Enter the range of pages to be printed eg 1-3") If sRange = "" Then MsgBox "No pages selected!", vbCritical, "Print Pages" End If ActiveDocument.ExportAsFixedFormat _ OutputFileName:=sPath & "Robert.pdf", _ ExportFormat:=wdExportFormatPDF, _ Range:=wdExportFromTo, From:=Split(sRange, "-")(0), To:=Split(sRange, "-")(1) End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
|||
|
|||
Quote:
Thank you, thank you, thank you Mr. gmayor I can't thank you enough. Quote:
Thank you again Best Regards |
Tags |
word vba, word vba code, word vba macro |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Save File with specific name from fields input. | PM1 | Word | 17 | 10-04-2020 07:22 PM |
Drag and Drop into an input range results in #REF! error | DJ0691 | Excel | 4 | 02-20-2020 10:16 AM |
Auto generate X pages from input | lipatin | Word VBA | 12 | 06-01-2018 12:13 AM |
Automatically copy/paste a form field onto new pages, with user input included | Pindar | Word VBA | 3 | 01-13-2017 11:49 AM |
Save a range of pages as PDF | gn4619 | Word VBA | 9 | 10-27-2015 02:11 PM |