Home » パワーポイントマクロ・PowerPoint VBAの使い方 » プレースホルダー » リンク付き目次を作成するPowerPointマクロ

リンク付き目次を作成するPowerPointマクロ

対象:PowerPoint97, PowerPoint2000, PowerPoint2002, PowerPoint2003

スライド番号付きの目次スライドを作成するマクロをご紹介しました。

PowerPointの目次関連では、
「ハイパーリンク付きの目次を作成するにはどうすればいいのでしょうか?」
というご質問をいただくこともあります。

Wordの目次のように、クリックすることで該当するスライドを表示できるように簡単にできないのか、というご質問です。

このサイトでは、PowerPoint標準の目次スライド作成機能で目次を作成しておいて、手作業で1枚づつハイパーリンクを設定する方法を既にご紹介しています。しかし、スライドの枚数が多いと正直いって大変です。

[スポンサードリンク]

リンク付き目次スライドを作成する機能も標準では用意されていませんから、VBA(Visual Basic for Applications)でマクロを作成しましょう。

スライド番号付き目次スライド作成マクロに、少し手を加えればリンク付き目次を作成するマクロも、簡単にできてしまいます。


▼ハイパーリンク付き目次スライドを作成するマクロ
Sub SummarySlideWithHref()

 On Error GoTo ERR_HANDLER

 Dim objSlide As Slide
 Dim objText As TextRange
 Dim objShape As Shape
 Dim intId As Integer
 Dim intLoop As Integer

 'アクティブなスライドのSlideIndexを取得
 intId = ActiveWindow.Selection.SlideRange.SlideIndex

 'アクティブなスライドの前に、目次用スライドを追加
 ActivePresentation.Slides.Add intId, ppLayoutText
 ActivePresentation.Slides(intId).Shapes(1).TextFrame.TextRange = "目次"
 
 '今、追加した目次用スライドに、各スライドのタイトルを書き出す
 Set objText = ActivePresentation.Slides(intId).Shapes(2).TextFrame.TextRange
 objText = ""
 
 For Each objSlide In ActivePresentation.Slides
  'タイトルプレースホルダがある場合
  If objSlide.Shapes.HasTitle Then
   Set objShape = objSlide.Shapes.Title
   'タイトルが入力されている場合
   If Trim(objShape.TextFrame.TextRange.Text) <> "" Then
    objText = objText & objShape.TextFrame.TextRange.Text
   'タイトルが未入力かスペースだけの場合
   Else
    objText = objText & "(タイトルなし)"
   End If
  'タイトルプレースホルダがない場合
  Else
   objText = objText & "(タイトルなし)"
  End If
  'タブ文字・スライド番号・改行コードの追加
  objText = objText & Chr(9) & objSlide.SlideIndex & Chr(13)
 Next objSlide
 
 'リンクの設定
 For intLoop = 1 To objText.Sentences.Count
  Set objSlide = ActivePresentation.Slides(intLoop)
  With objText.Sentences(intLoop).ActionSettings(ppMouseClick).Hyperlink
   'リンク先スライドの指定
   .SubAddress = _
    objSlide.SlideID & "," & _
    objSlide.SlideIndex & "," & _
    objText.Sentences(intLoop).Text
   'ポップヒントの指定
   .ScreenTip = objText.Sentences(intLoop).Text
  End With
 Next intLoop
 
 Exit Sub
 
ERR_HANDLER:

 MsgBox "スライドを1枚だけ選択してから、マクロを実行してください。"

End Sub

後半のFor〜Nextループ文が、スライド番号付き目次スライド作成マクロに追加した部分で、ハイパーリンクの設定を行っている箇所です。

前半で目次スライドを作ってしまって、後半でまとめてリンクを設定しているわけです。

▼サンプルファイル(002550.ppt 55KByte)ダウンロード

細かくコメントを入れてありますので、VBAでループ処理できるレベルの方なら解析は難しくないと思います。

スライドのタイトル文字列だけが必要で、スライド番号が不要なら
「objText = objText & Chr(9) & objSlide.SlideIndex & Chr(13)」
をコメントアウトすればスライド番号は作成されません。

上記マクロではスライドショー実行時にリンク文字の上にマウスポインタを移動すると、ポップヒントが表示されます。このハイパーリンクのポップヒントが不要ならば
「.ScreenTip = objText.Sentences(intLoop).Text」
をコメントしてアウトしてください。

それから既にご紹介していることですが、PowerPointでハイパーリンクを使ってジャンプできるのは、あくまでもスライドショー実行中だけです。

関連語句
もくじ,モクジ
[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » プレースホルダー » リンク付き目次を作成するPowerPointマクロ

TrackBack:0

TrackBack URL

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » プレースホルダー » リンク付き目次を作成するPowerPointマクロ

「プレースホルダー」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.