2011-01-27 12 views
3

나는 슬라이드에서 다른 슬라이드로 이동하는 버튼을 만들려고했습니다. 나는 activeslide.view.slide ("Menu Slide")와 같은 것을 할 수 있기를 바란다.VBA를 사용하여 특정 PowerPoint 슬라이드로 이동할 수 있습니까?

그게 효과가 없지만 나는 그렇게 생각할 것이다.

+1

이 작업은 VBA없이 수행 할 수 있으며 동작/트리거라고합니다. – Stan

+0

내가 읽었을 때 트리거는 슬라이드 자체가 아닌 슬라이드의 움직이는 객체에서만 작동합니다. – Randy

+3

아니요, 아니요. 그림 또는 직사각형과 같은 객체를 선택한 다음 삽입 탭 (2007/2010)에서 "동작"을 클릭하십시오. "On Mouse Clicked"에서 원하는 슬라이드를 선택하십시오. 그것은 간단합니다. – Stan

답변

4

Private Sub CommandButton1_Click() 
    SlideShowWindows(1).View.GotoSlide GetSlideIndex("Slide2"), 1 
End Sub 
+0

감사합니다. 코드를 감사드립니다! – Randy

+1

방금 ​​슬라이드 (Slide2)를했습니다. – PhilHibbs

5

첫 번째 슬라이드로 이동하는 CommandButton을 사용 여기 이름

Function GetSlideIndex(Slide As String) As Integer 
    Dim retVal As Integer 
    retVal = 0 
    For i = 1 To ActivePresentation.Slides.Count 
     If ActivePresentation.Slides(i).Name = Slide Then 
      retVal = i 
      Exit For 
     End If 
    Next 
    GetSlideIndex = retVal 
End Function 

을 전달하여 슬라이드 인덱스를 얻기 위해이 코드

당신을 함수를 시도 실제로 슬라이드의 이름을 지정해야합니다. 슬라이드의 ".Name"속성은 개요에있는 이름과 다르며 이름에 연결되지 않습니다. 저는 많은 사람들이 그것을 깨닫지 못하기 때문에 이것을 말하고 있습니다. VBA를 통해이 속성을 설정해야합니다. 이 작업을 수행하지 않으면 예기치 않은 결과가 발생할 수 있습니다. PowerPoint는 슬라이드를 삽입 할 때마다 슬라이드의 이름을 "슬라이드 번호"로 지정하므로 프레젠테이션 중간에 슬라이드를 삽입하면 같은 이름의 슬라이드를 여러 개 만들 수 있습니다. 특별히 명명 된 슬라이드를 찾고 슬라이드의 이름을 변경하지 않은 경우 PowerPoint는 Slides 컬렉션을 순환하는 데 사용하는 모든 루프에서 찾은 첫 번째 "슬라이드 #"을 반환합니다. 프레젠테이션을 편집하고 슬라이드를 움직이면 많은 문제가 발생할 수 있습니다. 나중에 링크하고자하는 슬라이드의 이름을 바꾸거나 (또는 ​​전체 슬라이드 컬렉션을 반복하고 각 슬라이드의 ".Name"속성을 제목 1 개체의 내용으로 변경하는 내용을 작성하는) 슬라이드의 이름을 바꾸는 것이 좋습니다. 여기

다음은 슬라이드의 인덱스 번호를 얻기 위해 몇 가지 코드가 현재 슬라이드

Sub ChangeSlideName() 

    Dim NewName As String 
    Dim ActiveSlide As Slide 

    Set ActiveSlide = ActiveWindow.View.Slide 

    NewName = InputBox("Enter new slide name for slide " & _ 
       ActiveSlide.SlideIndex, "New Slide Name", ActiveSlide.Name) 

    If NewName = "" Then 

     Exit Sub 

    End If 

    ActiveSlide.Name = NewName 

End Sub 


에게 이름을 변경하는 몇 가지 코드입니다. 그것은 다른 대답처럼 작동합니다. 조금 더 직접적으로.

다음


Function GetSlideIndex(SlideName As String) 

    For Each Slide In ActivePresentation.Slides 

     If Slide.Name = SlideName Then 

      GetSlideIndex = Slide.SlideIndex 
      Exit Function 

     End If 

    Next 

End Function 
실제로 추가 할 슬라이드에

Sub MoveToSlide() 

    SlideShowWindows(1).View.GotoSlide GetSlideIndex("YourSlideName") 

End Sub 

편집을 보내드립니다 하위 경우 : MoveToSlide의 서브 클릭하거나 마우스 개체에 대한 작업 위에 마우스에 추가 할 수 있습니다, 명령 단추가 아닙니다. 이를 수행하려면 사용할 오브젝트를 선택하고 삽입 -> 링크 -> 조치로 이동하여 매크로 실행을 선택하십시오.

관련 문제