2011-01-27 64 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

私は 'Slides(" 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はスライドが挿入された場所に「Slide#」という名前をつけます。したがって、プレゼンテーションの途中でスライドを挿入すると、同じ名前のスライドを複数持つことができます。特定の名前のスライドを探していて、スライドの名前を変更していない場合、PowerPointはSlidesコレクションを循環させるどのようなループでも最初に見つかった「Slide#」を返します。プレゼンテーションを編集してスライドを移動すると、多くの問題が発生する可能性があります。後でリンクしたいと思うスライドの名前を変更する(または、スライドコレクション全体をループし、各スライドの ".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サブは、任意のオブジェクトのためのアクションの上にマウスをクリックするか、マウスに追加することができ、コマンドボタンだけではありません。これを行うには、使用するオブジェクトを選択し、[挿入] - > [リンク] - > [アクション]に移動し、[マクロの実行]を選択します。

関連する問題