2016-07-18 13 views
1

Я пытаюсь экспортировать выбранный слайд в pdf при вызове этой функции.powerpoint vba экспорт определенного слайда в pdf

Этот код работает блестяще, но дает мне полное слайд-шоу в формате PDF.

Sub Export_to_PDF() 
    ActivePresentation.ExportAsFixedFormat ActivePresentation.Path & "\" & "ExportedFile" & ".pdf", ppFixedFormatTypePDF, ppFixedFormatIntentPrint 
End Sub 

Как изменить приведенный выше код, чтобы я мог указать номер слайда или ряд слайдов для экспорта в PDF. Мне нужен этот код, чтобы он мог работать из представления слайд-шоу.

Большое спасибо.

ответ

1

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

Sub Generate_PDF_Cert() 
'This function saves the last slide as a PDF file with a time stamp and the users name who completed the induction. 

timestamp = Now() 

Dim PR As PrintRange 
Dim lngLast As Long 
Dim savePath As String 
Dim PrintPDF As Integer 


'Location of saved file 
savePath = Environ("USERPROFILE") & "\Desktop\Induction\Certificates\" & Format(timestamp, "yyyymmdd-hhnn") & "_" & FirstNameX & "_" & LastNameX & ".pdf" 

lngLast = ActivePresentation.Slides.Count 

With ActivePresentation.PrintOptions 
    .Ranges.ClearAll ' always do this 
    Set PR = .Ranges.Add(Start:=lngLast, End:=lngLast) 
End With 

ActivePresentation.ExportAsFixedFormat _ 
Path:=savePath, _ 
FixedFormatType:=ppFixedFormatTypePDF, _ 
PrintRange:=PR, _ 
Intent:=ppFixedFormatIntentScreen, _ 
FrameSlides:=msoTrue, _ 
RangeType:=ppPrintSlideRange 

'Prompt user of file location and option to print. 
PrintPDF = MsgBox("A PDF file of this certificate has been saved to: " & vbCrLf & savePath & vbCrLf & vbCrLf & "Would you like to print a copy also?", vbYesNo, "PDF File Created") 
If PrintPDF = 6 Then Call Print_Active_Slide 


End Sub 

Таким образом, PDF-файл был создан легко и просто. Он в основном принимает последний слайд шоу и экспортирует только этот слайд в PDF. Это можно изменить на определенный слайд или диапазон слайдов. Затем можно также распечатать выбранный слайд со следующей функцией:

Sub Print_Active_Slide() 
' This code determines what slide is currently visible in the 
' slide show and then it clears the print range and prints out the 
' current slide. 


' Declare lSldNum as a long integer. 
Dim lSldNum As Long 

' Assign lSldNum to the current slide number. 
lSldNum = SlideShowWindows(1).View.Slide.SlideNumber 

' Set the print options for the active presentation. 
With ActivePresentation.PrintOptions 

' Set RangeType to print a slide range. 
.RangeType = ppPrintSlideRange 

' Delete old print range settings. 
.Ranges.ClearAll 

' Set Ranges to the new range for the current slide. 
.Ranges.Add lSldNum, lSldNum 
End With 

' Using the current print settings print the slide to the default 
' printer. 
ActivePresentation.PrintOut 

MsgBox "The file has been sent to the default printer", vbOKOnly, "Print Job Sent" 

End Sub 
Смежные вопросы