VBA ハイパーリンク
In this Article
- VBAのハイパーリンク
- VBAでハイパーリンクを追加する
- VBAで表示するテキストを追加する
- VBAでScreenTipを追加する
- VBAでハイパーリンクを削除する
- ワークシート内のすべてのハイパーリンクを削除する
- VBAを使用してウェブサイトのハイパーリンクを辿る
- ハイパーリンクを辿ってドライブ上のフォルダに移動する
- ハイパーリンクを辿ってドライブ上のファイルを開く
- 同じワークブック内の別のシートのセルに移動する
- ワークシート内のすべてのハイパーリンクを表示する
- ワークブック内のすべてのハイパーリンクを表示する
- FollowHyperlinkメソッドでメールを作成する
- エクセルでオートシェイプにハイパーリンクを追加する
- VBAを使用してハイパーリンクの式をセルに挿入する
- Accessでボタンにハイパーリンクを追加する
- Word で選択範囲からハイパーリンクを作成する
このVBAチュートリアルでは、VBAでハイパーリンクを操作するさまざまな方法について説明します。
VBAのハイパーリンク
VBAでは、ハイパーリンクの追加、ハイパーリンクの削除、ハイパーリンクを使ったメールの作成、ハイパーリンクを使ったファイルのオープンを行うことができます。
VBAでハイパーリンクを追加する
Hyperlinks.Addメソッドは、VBAを使用してセルにハイパーリンクを追加するメソッドです。 次のコードは、セル A1 にハイパーリンクを追加します。
Sub AddHyperlinkToCell()
ActiveSheet.Hyperlinks.Add Range("A1"), Address:="https://www.automateexcel.com/excel/"
End Sub
結果は以下のようになります。
VBAで表示するテキストを追加する
VBAでハイパーリンクにURLそのものではなく、表示用の分かりやすいテキストを追加することができます。ワークシート機能を使用する場合、ハイパーリンクを挿入し、提供されるダイアログボックスに表示するテキストを追加することになります。
以下のコードは、VBAを使用してハイパーリンクに表示するテキストを追加する方法を示しています。
Sub TextToDisplayForHyperlink()
ActiveSheet.Hyperlinks.Add Range("A1"), Address:="https://www.automateexcel.com/excel/", TextToDisplay:="Automate Excel"
End Sub
結果は以下のようになります。
VBAでScreenTipを追加する
ハイパーリンクに ScreenTip を追加すると、閲覧者がリンクにカーソルを合わせたときに、説明がポップアップ表示されるようになります。 以下のコードは、VBA を使用してハイパーリンクに ScreenTip を追加する方法を示しています。
Sub ScreenTipForHyperlink()
ActiveSheet.Hyperlinks.Add Range("A1"), Address:="https://www.automateexcel.com/excel/", TextToDisplay:="Automate Excel", ScreenTip:="Automate Excelへのリンクです"
End Sub
結果は以下のようになります。
VBAでハイパーリンクを削除する
Hyperlinks.Deleteメソッドを使用すると、セルからハイパーリンクを削除することができます。 次のコードは、セル A1 からハイパーリンク、およびセル内のテキストを削除します。 ハイパーリンクを削除しただけではテキスト自体は削除されないので、テキストを削除したい場合は、Clearメソッドを使用する必要があります。
Sub DeleteHyperlinkinCell()
Range("A1").Hyperlinks.Delete
Range("A1").Clear
End Sub
ワークシート内のすべてのハイパーリンクを削除する
Hyperlinks.Deleteメソッドを使用して、ワークシート内のすべてのハイパーリンクを削除することもできます。 次のコードは、ワークブックの最初のワークシートにあるすべてのハイパーリンクを削除します。
Sub RemoveAllHyperlinksInASheet()
ThisWorkbook.Sheets(1).Hyperlinks.Delete
End Sub
VBAを使用してウェブサイトのハイパーリンクを辿る
次のコードは、ワークブックのFollowHyperlinkメソッドを使用して、Webサイトのアドレスをブラウザの新しいウィンドウで開くことができます。
Sub FollowHyperlinkForWebsite()
ActiveWorkbook.FollowHyperlink Address:="https://www.automateexcel.com/excel", NewWindow:=True
End Sub
ハイパーリンクを辿ってドライブ上のフォルダに移動する
次のコードは、FollowHyperlinkメソッドを使って、デスクトップ上のExcelFilesというフォルダを開くものです。
Sub FollowHyperlinkForFolderOnDrive()
ActiveWorkbook.FollowHyperlink Address:="C:\Desktop</ExcelFiles"
End Sub
ハイパーリンクを辿ってドライブ上のファイルを開く
次のコードは、FollowHyperlinkメソッドを使って、デスクトップのExcelFilesというフォルダーにあるWorkbookOneというExcelファイルを開くものです。
Sub FollowHyperlinkForFile()
ActiveWorkbook.FollowHyperlink Address:="C:\DesktopExcelFiles﹑WorkbookOne.xlsx", NewWindow:=True
End Sub
同じワークブック内の別のシートのセルに移動する
VBAを使用すると、あるシートのセルにハイパーリンクを追加して、同じワークブックの別のシートに移動させることができます。例えば、ワークブックのSheet1、セルA1にいるときに、同じワークブックのSheet2、セルB2へのハイパーリンクを挿入したい場合、SubAddressプロパティを使用してこれを行うことができます。 次のコードは、その方法を示しています。
Sub GoToAnotherCellInAnotherSheetInTheSameWorkbook()
ActiveSheet.Hyperlinks.Add Range("A1"), Address:="", SubAddress:='" & Sheet2.Name & "'!B2", TextToDisplay:="ここをクリックして、同じワークブックのセルB2に移動します"
End Sub
ワークシート内のすべてのハイパーリンクを表示する
ハイパーリンクコレクションを使えば、ワークシート内のすべてのハイパーリンクをVBAエディタのイミディエイトウィンドウに表示することが出来ます。まず、キーボードでCTRL+Gを押すか、VBEエディタの、表示>イミディエイトウィンドウで、イミディエイトウィンドウを表示しておく必要があります。 次のコードは、ワークシートのハイパーリンクをイミディエイトウィンドウに表示します。
Sub ShowAllTheHyperlinksInTheWorksheet()
Dim ws As Worksheet, lnk As Hyperlink
Set ws = ThisWorkbook.Sheets(1)
For Each lnk In ws.Hyperlinks
Debug.Print lnk.Address
Next lnk
End Sub
結果はイミディエイトウィンドウに表示されます。
ワークブック内のすべてのハイパーリンクを表示する
ハイパーリンクコレクションを使って、ワークブック内のすべてのハイパーリンクをループしてメッセージボックスに表示することもできます。 次のコードは、これを実現するために多重ループを使用する例です。
Sub ShowAllTheHyperlinksInTheWorkbook()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each lnk In ws.Hyperlinks
MsgBox lnk.Address
Next lnk
Next ws
End Sub
FollowHyperlinkメソッドでメールを作成する
FollowHyperlinkメソッドを使用してメールを作成することもできます。 以下のコードでは、VBAでFollowHyperlinkメソッドを使用してメールを作成する方法を説明します。
Sub SendEmailUsingHyperlink()
Dim msgLink As String
msgLink = "mailto:" & "person@email.com" & "?" & "subject=" & "こんにちは" & "&" & "body=" & "お元気ですか?"
ActiveWorkbook.FollowHyperlink (msgLink)
End Sub
結果は以下のようになります。
エクセルでオートシェイプにハイパーリンクを追加する
Excel のオートシェイプにハイパーリンクを追加して、ユーザーがシェイプをクリックしたときにウェブサイトのアドレスに移動できるようにすることができます。 次のコードは、丸みを帯びた四角形を作成し、四角形にテキストを追加して、ハイパーリンクを追加します。
Sub AddingAHyperlinkToAShape()
Dim myShape As Shape
Set myDocument = Worksheets("Sheet1")
Set myShape = myDocument.Shapes.AddShape(msoShapeRoundedRectangle, 100, 100, 90, 30)
With MyShape
.TextFrame.Characters.Text = "Automate Excel"
End With
ActiveSheet.Hyperlinks.Add Anchor:=myShape, Address:="https://www.automateexcel.com/excel"
End Sub
結果は以下のようになります。
VBAを使用してハイパーリンクの式をセルに挿入する
下の画像のように、セルA4に投稿タイトル、セルB4に投稿リンクがあるとします。
ワークシートのハイパーリンクの式の構文は以下のとおりです。
HYPERLINK(link_location, [friendly_name])
link_location – ドキュメント、ファイル、ワークブック内の場所、またはオンライン サイトへのリンク
friendly_name (オプション) – セルに表示されるテキストまたは数値
セルC4に、投稿タイトルを表示してハイパーリンクを追加したい場合、普通はC4に=HYPERLINK(B4,A4)という数式を入力します。
この数式をSheet1のセルに挿入するには、VBAで次のコードを記述します。
Sub InsertHyperlinkFormulaInCell()
ActiveWorkbook.Worksheets("Sheet1").Range("C4").Formula = "=hyperlink(B4,A4)"
End Sub
Accessでボタンにハイパーリンクを追加する
VBAでは、Accessでもハイパーリンクを扱うことができます。例えば、フォームにボタンがあり、ユーザーがそのボタンをクリックすると、あるウェブサイトに移動するようにしたいとします。このような場合、Application.FollowHyperlinkメソッドを使用するのが一つの方法です。 サンプルフォームにbuttonOneというボタンを設置したものを以下に示します。
このボタンのコードは、次のようになります。
Private Sub buttonOne_Click()
Application.FollowHyperlink ("https://www.automateexcel.com/excel/")
End Sub
Word で選択範囲からハイパーリンクを作成する
Word VBAでもハイパーリンクを扱うことができます。 例えば、Wordに「ここをクリックすると、Excelの自動化サイトに飛びます」というテキストがあり、それが以下のように選択されているとします。
VBAを使ってこのテキストをハイパーリンクにするには、次のコードを使用します。
Private Sub TurnASelectionIntoAHyperlink()
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="https://www.automateexcel.com/excel/", ScreenTip:="ここをクリックしてください", Target:=NewWindow
End Sub
結果は以下のようになります。