2010-03-07 5 views
4

내 회사의 그룹 중 하나가 매우 큰 PowerPoint 슬라이드 데크에서 작동합니다. 이 덱의 모든 슬라이드가 모든 사람과 관련이있는 것은 아닙니다. 이 데크의 목적은 사람들이 필요한 프리젠 테이션 유형에 따라 슬라이드를 고르고 선택할 수있는 재료의 단일 소스를 갖는 것입니다. 슬라이드 데크에는이 과정을보다 쉽게 ​​수행 할 수 있도록 사전 정의 된 여러 개의 사용자 정의 슬라이드 쇼가 있습니다.사용자 지정 PowerPoint 슬라이드 쇼를 자동으로 내보내는 VSTO 추가 기능

이 솔루션은 많은 경우 잘 작동하지만 사용자 정의 쇼를 새로운 프레젠테이션으로 신속하게 내보내는 간단한 방법이 필요합니다. 사용자가 하나 이상의 맞춤 슬라이드 쇼를 선택한 다음 슬라이드 쇼를 바탕 화면으로 내보내고 내 방식대로 나를 도와 줄 수있는 코드를 찾고자하는 VSTO 추가 기능을 개발하려고합니다.

누구든지 기존 사용자 지정 쇼를 새 프레젠테이션으로 내보내는 방법을 알고 있습니까? 더 나아가 사용자가 하나 이상의 기존 프로그램을 선택하고 내보낼 수있는 방법이 있습니까?

답변

5

큰 문제는, 내가 오랜 시간 동안이 나 자신을 싶었던, 그래서 당신을 위해 그것을 파악하는 시간이 걸렸다 (날!).

기본적으로, 모든 NamedSlideShows를 통해) 루프 할 것, b)는 SlideID하여 슬라이드를 찾아, C) 원래의 디자인과 NamedSlideShow 슬라이드를 통해) 새 프레젠테이션 후 D를 추가 복사합니다. 명령을 보내는 방법에 따라 하나 또는 모든 사용자 정의 프로그램에 대해이 작업을 수행 할 수 있습니다.

다음은 예입니다 :

Sub FindShows() 
    Dim p As PowerPoint.Presentation 
    Set p = PowerPoint.ActivePresenation 
    Dim cShow As PowerPoint.NamedSlideShow 
    For Each cShow In p.SlideShowSettings.NamedSlideShows 
     SaveCustomShow (cShow.Name, p) 
     'If using PowerPoint 2010 use the following line instead: 
     'SaveCustomShow cShow.Name, p 
    Next 
End Sub 

FindShows 하위 그냥 모든 사용자가 ActivePresentation에 표시하고 지정된 사용자 정의보기 이름을 기준으로 각각의 새로운 presenation을 생성하는 루틴로 전송 찾습니다. 필요에 따라이를 사용자 정의 할 수 있습니다.

이 루틴은 아래의 루틴입니다. 몇 가지주의 할 수 있습니다

  • 가 소스 슬라이드의 슬라이드 디자인을 통해 전송하려면 해당 디자인을 사용하여 복사 한 슬라이드를 설정 명시 적으로 에 있습니다.
  • NamedSlideShowSlideID 개의 슬라이드 만 제공합니다. 다음에 은 프리젠 테이션의 해당 슬라이드를 식별 할 수 있습니다. 슬라이드 개체를 반환합니다. 그런 다음 복사하고 원본의 디자인과 함께 붙여 넣기 만하면됩니다.
Sub SaveCustomShow(showName As String, p As Presentation) 
     Dim cShows As PowerPoint.NamedSlideShows 
     Set cShows = p.SlideShowSettings.NamedSlideShows 
     Dim cSlideIDs As Variant 
     cSlideIDs = cShows(showName).SlideIDs 
     Dim destinationPath As String 
     destinationPath = "C:\Temp\" 
     Dim newP As PowerPoint.Presentation 
     Set newP = PowerPoint.Presentations.Add(WithWindow:=False) 
     With newP 
      .SaveAs destinationPath & cShows(showName).Name 
      Dim s As PowerPoint.Slide 
      Dim e As Integer 
      For e = 1 To UBound(cSlideIDs) 
       Set s = p.Slides.FindBySlideID(SlideID:=cSlideIDs(e)) 
       s.Copy 
       .Slides.Paste.Design = s.Design 
      Next 
      .Save 
      .Close 
     End With 
     Set newP = Nothing 
    End Sub 

있다 없다 그 밖으로 일을해야합니다,하지만 매력처럼 작동하므로, 코드에서 확인 오류!

관련 문제