2017-01-31 1 views
-1

Excel VBA (나는 이미 코드가 있음)에서 새 PPT를 어떻게 만들 수 있는지 알고 싶지만 만드는 동안 응용 프로그램을 보지 않아도됩니다. 몇 가지 통찰력을 발견했지만 기존의 PPT 파일을 열 때만 작동하지만 새 파일을 만듭니다.응용 프로그램을 보지 않고 Excel VBA로 PowerPoint를 만드는 방법

Dim pptApp As PowerPoint.Application 
Dim pptPres As PowerPoint.Presentation 
Dim pptSlide As PowerPoint.Slide 
Dim pptShape As PowerPoint.Shape 
Dim excelTable As Excel.Range 
Dim SlideTitle As String 
Dim SlideText As String 
Dim SlideObject As Object 
Dim pptTextbox As PowerPoint.Shape 
Dim SlideNumber As String 

On Error Resume Next 
Set pptApp = New PowerPoint.Application 
Err.Clear 

Set pptPres = pptApp.Presentations.Add 
pptPres.PageSetup.SlideSize = ppSlideSizeOnScreen 
+0

'On Error Resume Next'는 IMO에서 특히 좋지 않습니다. 파워 포인트 앱 인스턴스를 만들 수 없다면 아무 일도없는 것처럼 코드가 계속 실행되지 않아야한다. –

+1

질문을 편집하여 정확히 해당 코드 스 니펫이 무엇인지 명확히 할 수 있습니까? 보이지 않는'pptApp '을 만드는 것이 당신의 시도입니까? 또는 기존 ppt 파일을 여는 코드에서 발췌 한 내용입니까? 이 코드는 아무 것도 열지 않으며'.Visible = False'를 지정하는 것으로 보이므로 실제로 질문과 연결되는 방법이 명확하지 않습니다. –

+0

또한 ... 당신은 PowerPoint 라이브러리가 참조 된 것 같습니다 (''PowerPoint.Application' *은 * 컴파일합니까?) - 그렇다면 응용 프로그램 인스턴스의 생성을 늦게 바인딩하는 이유는 무엇입니까? 그냥'Set pptApp = New PowerPoint.Application'을하십시오. –

답변

2

PowerPoint.Application.Active를 호출하면 그냥 않습니다 - 그것은, 그것을 활성화 보이는 창을 만드는 :

Dim ppt As PowerPoint.Application 
Set ppt = New PowerPoint.Application 
Debug.Print ppt.Visible '<--Prints 0 (msoFalse) 
ppt.Activate    '<--THIS SHOWS THE WINDOW. 
Debug.Print ppt.Visible '<--Prints -1 (msoTrue) 

그냥 완전히 pptApp.Activate 라인을 제거합니다.

주석에서 언급했듯이 오류 처리기도 수정해야합니다. 이 경우 가장 좋은 해결책은 완전히 제거하는 것입니다. GetObject은 기존 인스턴스가있는 경우이를 반환합니다. 나는 당신이 "새로운 PPT를 만들자"라고 말하면 을 말하지 않는다.은 "실행중인 PowerPoint 인스턴스가 있으면 첨부하고, 그렇지 않으면 새로운 인스턴스를 만듭니다"라고 가정합니다. 그것이 현재 귀하의 코드가하는 것입니다.

또한 의견에서 언급 한 것처럼 Microsoft PowerPoint X.X Object Library (Dim pptApp As PowerPoint.Application으로 입증 됨)에 대한 참조가있는 경우 CreateObject을 사용하면 안됩니다. 그것은 후기 바인딩을위한 것입니다. 참조가있는 경우 조기 바인딩을 사용하십시오.

마지막으로 PowerPoint.Application을 만들면 이 기본적으로 표시되지 않습니다.입니다. 이 한 줄로 줄여서 코드를 "수정"할 수 있습니다 :

Set pptApp = New PowerPoint.Application 
+0

감사. 좋습니다, 나는 당신의 포스트 및 다른 코멘트에 따라 나의 부호를 편집했다. 하지만 여전히 내 pptpresestation.add 코드 때문에 아마도 볼 수 있습니까? – thePB

+0

Presentations.Add는 선택적 매개 변수 인 WithWindow를 사용합니다. pptPres = Presentations.Add (msoFalse)를 설정하면 윈도우가없는 (보이지 않는) 프리젠 테이션에 대한 참조가 제공됩니다. –

관련 문제