「パワーポイント vba ハイパーリンクアドレスを取得」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
ハイパーリンクのアドレスを取得するPowerPointマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
アクティブスライド上のハイパーリンクのアドレスを取得するサンプルマクロ
以下のようなマクロで、アクティブスライド上のハイパーリンクのアドレスと、ハイパーリンクの設定されている文字列を取得して、メッセージボックスに表示することができます。
Dim hlk As Hyperlink For Each hlk In _
ActiveWindow.Selection.SlideRange.Hyperlinks
With hlk
MsgBox .TextToDisplay & vbCrLf & .Address
End With
Next hlk
End Sub
Hyperlinksプロパティで、Hyperlinksコレクションオブジェクトを取得できますから、アクティブなスライド上の、全ハイパーリンクにループを回して、
For Each hlk In _
ActiveWindow.Selection.SlideRange.Hyperlinks
リンクの設定されている文字列と、アドレスをメッセージボックスに表示しています。
With hlk
MsgBox .TextToDisplay & vbCrLf & .Address
ハイパーリンクのアドレスをExcelに書き出すサンプルマクロ
「パワーポイント vba ハイパーリンクアドレスを取得」
という検索が行われた状況を想像すると、ハイパーリンクが大量に設定されているPowerPointファイルからアドレスを取り出す必要があるが、手作業で行うのは面倒、ということではないかと思います。
そんな状況に使えそうなマクロを作ってみました。
アクティブなプレゼンテーションファイルから、ハイパーリンクの存在するスライド番号・ハイパーリンクの設定されている文字列・ハイパーリンクのアドレスを、Excelに書き出すPowerPointマクロです。
Dim sld As Slide
Dim hlk As Hyperlink
Dim xl_app As Object ' Excel.Application
Dim xl_wbk As Object ' Excel.Workbook
Dim r As Long
Set xl_app = CreateObject("Excel.Application")
With xl_app
.Visible = True
Set xl_wbk = .Workbooks.Add
End With
r = 1
With xl_wbk.Worksheets(1)
.Cells(r, "A").Value = "スライド番号"
.Cells(r, "B").Value = "表示テキスト"
.Cells(r, "C").Value = "アドレス"
For Each sld In ActivePresentation.Slides
For Each hlk In sld.Hyperlinks
r = r + 1
.Cells(r, "A").Value = sld.SlideIndex
.Cells(r, "B").Value = hlk.TextToDisplay
.Cells(r, "C").Value = hlk.Address
Next hlk
Next sld
.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
Set xl_app = Nothing
End Sub
ExcelをCreateObjectしてから表示し、
Set xl_app = CreateObject("Excel.Application")
With xl_app
.Visible = True
新規のブックを作成します。
Set xl_wbk = .Workbooks.Add
行番号を格納する変数・rを初期化して、
r = 1
先ほど作成した新規ブックの1枚目のワークシートの、
With xl_wbk.Worksheets(1)
1行目に見出しを作成します。
.Cells(r, "A").Value = "スライド番号"
.Cells(r, "B").Value = "表示テキスト"
.Cells(r, "C").Value = "アドレス"
アクティブなプレゼンテーションファイルの、全スライドにループを回して、
For Each sld In ActivePresentation.Slides
そのループ内で、更に、各スライド上の全ハイパーリンクに対してループを回し、
For Each hlk In sld.Hyperlinks
Excelのワークシートの2行目以降の、
r = r + 1
A列にスライド番号を、
.Cells(r, "A").Value = sld.SlideIndex
B列に表示テキストを、
.Cells(r, "B").Value = hlk.TextToDisplay
C列にアドレスを書き出しています。
.Cells(r, "C").Value = hlk.Address
全スライドのループ処理が終わったら、書き出したExcelの列幅を調整しています。
Next sld
.Range("A1").CurrentRegion.EntireColumn.AutoFit
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » ハイパーリンクのアドレスを取得するPowerPointマクロ