다른 사용자가 작성한이 스크립트가 있습니다윈도우를 보지 않고 어떻게 프로그래밍 방식으로 파워 포인트를 열 수 있습니까?
입력 파일을 열고 .pdf로 변환하여 출력 파일로 저장합니다.
그러나 PowerPoint도 열리고 실제 창이로드되는 것을 볼 수 있습니다.
이 프로세스는 서버에서 실행될 예정이므로 사용자가 무언가를 변환하려고 할 때마다 GUI를로드하는 것이 불필요하게 리소스 집약적 일 것이라고 생각합니다.
GUI가 팝업되지 않고 프로그래밍 방식으로 PowerPoint를 여는 방법이 있습니까?
나는
objPPT.Visible = False
와
objPPT.Visible = True
를 교체 시도했다 그러나 그것은 그 방법이 될 수 없음을 말해 오류가 발생합니다.
는 또한
objPPT.Presentations.Open inputFile,,,msoFalse
와
objPPT.Presentations.Open inputFile
를 교체 시도했다하지만 그 말을 나에게 오류를 제공합니다
마이크로 소프트 파워 포인트 2013 : Application.ActivePresentation : 잘못된 요청 . 적극적인 발표가 없습니다.
오류는 Set objPresentation = objPPT.ActivePresentation
행에서 트리거됩니다.
주제에 대한 몇 가지 연구를하고에서, 나는 네 번째 매개 변수는
WithWindow
인
Open method
를 사용 에 의해 어떤 사람들은 성공을 것을 발견했다. 이론적으로 이것은 false로 설정된 경우 창없이 프리젠 테이션을 열어야합니다.
하지만 내가하는 일은 무엇이든 작동하지 않는 것 같습니다.
WithWindow:= false
은 내게에서는 OpenXML에 대해 알게 구문 오류
' Courtesy BillP3rd of superuser.com
Option Explicit
Sub WriteLine (strLine)
WScript.Stdout.WriteLine strLine
End Sub
' http://msdn.microsoft.com/en-us/library/office/aa432714(v=office.12).aspx
Const msoFalse = 0 ' False.
Const msoTrue = -1 ' True.
' http://msdn.microsoft.com/en-us/library/office/bb265636(v=office.12).aspx
Const ppFixedFormatIntentScreen = 1 ' Intent is to view exported file on screen.
Const ppFixedFormatIntentPrint = 2 ' Intent is to print exported file.
' http://msdn.microsoft.com/en-us/library/office/ff746754.aspx
Const ppFixedFormatTypeXPS = 1 ' XPS format
Const ppFixedFormatTypePDF = 2 ' PDF format
' http://msdn.microsoft.com/en-us/library/office/ff744564.aspx
Const ppPrintHandoutVerticalFirst = 1 ' Slides are ordered vertically, with the first slide in the upper-left corner and the second slide below it.
Const ppPrintHandoutHorizontalFirst = 2 ' Slides are ordered horizontally, with the first slide in the upper-left corner and the second slide to the right of it.
' http://msdn.microsoft.com/en-us/library/office/ff744185.aspx
Const ppPrintOutputSlides = 1 ' Slides
Const ppPrintOutputTwoSlideHandouts = 2 ' Two Slide Handouts
Const ppPrintOutputThreeSlideHandouts = 3 ' Three Slide Handouts
Const ppPrintOutputSixSlideHandouts = 4 ' Six Slide Handouts
Const ppPrintOutputNotesPages = 5 ' Notes Pages
Const ppPrintOutputOutline = 6 ' Outline
Const ppPrintOutputBuildSlides = 7 ' Build Slides
Const ppPrintOutputFourSlideHandouts = 8 ' Four Slide Handouts
Const ppPrintOutputNineSlideHandouts = 9 ' Nine Slide Handouts
Const ppPrintOutputOneSlideHandouts = 10 ' Single Slide Handouts
' http://msdn.microsoft.com/en-us/library/office/ff745585.aspx
Const ppPrintAll = 1 ' Print all slides in the presentation.
Const ppPrintSelection = 2 ' Print a selection of slides.
Const ppPrintCurrent = 3 ' Print the current slide from the presentation.
Const ppPrintSlideRange = 4 ' Print a range of slides.
Const ppPrintNamedSlideShow = 5 ' Print a named slideshow.
' http://msdn.microsoft.com/en-us/library/office/ff744228.aspx
Const ppShowAll = 1 ' Show all.
Const ppShowNamedSlideShow = 3 ' Show named slideshow.
Const ppShowSlideRange = 2 ' Show slide range.
'
' This is the actual script
'
Dim inputFile
Dim outputFile
Dim objPPT
Dim objPresentation
Dim objPrintOptions
Dim objFso
If WScript.Arguments.Count <> 2 Then
WriteLine "You need to specify input and output files."
WScript.Quit
End If
inputFile = WScript.Arguments(0)
outputFile = WScript.Arguments(1)
Set objFso = CreateObject("Scripting.FileSystemObject")
If Not objFso.FileExists(inputFile) Then
WriteLine "Unable to find your input file " & inputFile
WScript.Quit
End If
If objFso.FileExists(outputFile) Then
'WriteLine "Your output file (' & outputFile & ') already exists!"
'WScript.Quit
End If
WriteLine "Input File: " & inputFile
WriteLine "Output File: " & outputFile
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
objPPT.Presentations.Open inputFile
Set objPresentation = objPPT.ActivePresentation
Set objPrintOptions = objPresentation.PrintOptions
objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count
objPrintOptions.RangeType = ppShowAll
' Reference for this at http://msdn.microsoft.com/en-us/library/office/ff746080.aspx
objPresentation.ExportAsFixedFormat outputFile, ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoTrue, ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, msoFalse, objPrintOptions.Ranges(1), ppPrintAll, "Slideshow Name", False, False, False, False, False
objPresentation.Close
ObjPPT.Quit
를 제공하고, 그로 찾고 있어요.
Presentations.Open "filename", boolReadOnly, boolOpenUntitled, boolWithWindow
당신은 입력 파일을 열려면 그것을 이야기하고, 제목뿐만 아니라 읽기와 WithWindow를 떠나 :
IIRC 표시되는 창없이 PowerPoint를 자동화 할 수 없습니다. –
Ansgar, 맞지 않습니다. 보이지 않는 창을 사용하여 확실히 자동화 할 수는 있지만 특정 방법을 호출 할 수는 없습니다. –