Excel VBAで実用ツール(Hyperlink編)

2024-01-07

■Excel VBAのHyperlinksコレクション、Hyperlinkオブジェクトについて

Excel VBAにはハイパーリンク関連のオブジェクトとして、HyperlinksコレクションとHyperlinkオブジェクトが提供されています。
簡単に利用できますし、なかなか便利な機能ですので、メソッドおよびプロパティの一覧を掲載したうえ、サンプル・プログラムをご紹介します。
⇒詳細はMicrosoftのサイト(Hyperlinksコレクション、Hyperlinkオブジェクト)を参照して下さい。

Hyperlinksコレクションの詳細

HyperlinksコレクションはHyperlinkオブジェクトの集合体で、Worksheetオブジェクト、DialogSheetオブジェクト、RangeオブジェクトのHyperlinksプロパティで取得できます。
提供されているメソッドとプロパティは下表の通りです。

(Hyperlinksコレクションのメソッドとプロパティ)

Addメソッド
説明 当該コレクションにHyperlinkオブジェクトを追加する
定義 Function Add(Anchor As Object, Address As String, SubAddress As Variant, ScreenTip As Variant, TextToDisplay As Variant) As Object
Applicationプロパティ(読み取り専用)
説明 当該コレクションを作成したApplicationオブジェクトを取得する
定義 Property Application() As Application
Countプロパティ(読み取り専用)
説明 当該コレクションに含まれるHyperlinkオブジェクトの数を取得する
定義 Property Count() As Long
Creatorプロパティ(読み取り専用)
説明 当該コレクションを作成したアプリケーションを取得する(※)

(※)Excelを表す「1480803660(=X’5843454C’)」固定

定義 Property Creator() As XlCreator
Deleteメソッド
説明 当該コレクションからHiperlinkオブジェクトを削除する
定義 Sub Delete()
Itemプロパティ(読み取り専用)
説明 当該コレクションから指定したHyperlinkオブジェクトを取得する
定義 Property Item(Index As Variant) As Hyperlink
Parentプロパティ(読み取り専用)
説明 当該コレクションの親オブジェクトを取得する
定義 Property Parent() As Object

Hyperlinkオブジェクトの詳細

Hyperlinkオブジェクトはハイパーリンクを表すオブジェクトで、HyperlinksコレクションおよびShapeオブジェクト、ChartオブジェクトのHyperlinkプロパティにより取得できます。
提供されているメソッドとプロパティは下表の通りです。

(Hyperlinkオブジェクトのメソッドとプロパティ)

Addressプロパティ
説明 文書のアドレスを設定/取得する(※)

(※)指定可能なアドレスは、URL、フォルダやファイルのパス、ブックマーク、メールアドレス、Excelシートのセルやセル範囲等

定義 Property Address() As String
AddToFavoritesメソッド
説明 HyperlinkへのショートカットをFavorites フォルダに追加する
定義 Sub AddToFavorites()
Applicationプロパティ(読み取り専用)
説明 当該オブジェクトを作成したApplicationオブジェクトを取得する
定義 Property Application() As Application
CreateNewDocumentメソッド
説明 指定したHyperlinkにリンクされた新しい文書を作成する
定義 Sub CreateNewDocument(Filename As String, EditNow As Boolean, Overwrite As Boolean)
Creatorプロパティ(読み取り専用)
説明 当該オブジェクトを作成したアプリケーションを取得する(※)

(※)Excelを表す「1480803660(=X’5843454C’)」固定

定義 Property Creator() As XlCreator
Deleteメソッド
説明 当該オブジェクトを削除する
定義 Sub Delete()
EmailSubjectプロパティ
説明 当該オブジェクトの電子メール件名を設定/取得する
定義 Property EmailSubject() As String
Followメソッド
説明 Hyperlink先の文書をダウンロードし、適切なアプリケーションで表示する
定義 Sub Follow(NewWindow As Variant, AddHistory As Variant, ExtraInfo As Variant, Method As Variant, HeaderInfo As Variant)
Nameプロパティ(読み取り専用)
説明 当該オブジェクトの名前を取得する
定義 Property Name() As String
Parentプロパティ(読み取り専用)
説明 当該オブジェクトの親オブジェクトを取得する
定義 Property Parent() As Object
Rangeプロパティ(読み取り専用)
説明 当該オブジェクトが接続されている範囲を表すRangeオブジェクトを取得する
定義 Property Range() As Range
ScreenTipプロパティ
説明 当該オブジェクトのScreenTipテキストを設定/取得する
定義 Property ScreenTip() As String
Shapeプロパティ(読み取り専用)
説明 当該オブジェクトに添付されている図形を表すShapeオブジェクトを取得する
定義 Property Shape() As Shape
SubAddressプロパティ
説明 Hyperlink先の文書内の特定の位置(セルやセル範囲)を設定/取得する
定義 Property SubAddress() As String
TextToDisplayプロパティ
説明 当該オブジェクトに対して表示するテキストを設定/取得する
定義 Property TextToDisplay() As String
Typeプロパティ(読み取り専用)
説明 当該オブジェクトの種類を取得する(※)

(※)0:Rangeオブジェクト
1:Shapeオブジェクト
2:インライン図形(Wordのみ)

定義 Property Type() As Long

■指定したフォルダ下のファイル一覧を作成し、ハイパーリンクを設定するツール

指定したフォルダ下のファイルを一覧にする処理とハイパーリンクを作成する処理を組合せると、ハイパーリンク付のファイル一覧を簡単に作成することができます。

ハイパーリンクを作成する処理

HyperlinksコレクションのAddメソッドを実行すると、ハイパーリンクを作成できます。

  1. Worksheet.Hyperlinks.Add (Anchor As Object, Address As String, [SubAddress As Variant], [ScreenTip As Variant], [TextToDisplay As Variant])

引数として指定できる項目は下表の通りですが、指定必須の引数はアンカーとアドレスです。

引数 説明
Anchor アンカー(必須)
(ハイパーリンクを作成するオブジェクト(※1)を指定)(※1)指定可能なオブジェクトは、RangeオブジェクトまたはShapeオブジェクト
Address アドレス(必須)
(ハイパーリンクのアドレス(※2)を指定)(※2)指定可能なアドレスは、URL、フォルダやファイルのパス、ブックマーク、メールアドレス、Excelシートのセルやセル範囲等
SubAddress サブアドレス
(ハイパーリンク先文書内の位置(セルやセル範囲)を指定)
ScreenTip ヒント
(マウスポインタで指した場合に表示されるヒントを指定)
TextToDisplay 表示テキスト
(ハイパーリンクで表示されるテキストを指定)

サンプル・プログラム

行番号9で対象とするフォルダを変数にセットし、行番号10で最初のファイルのファイル名を取得して、行番号11~15の繰返し処理に入ります。
行番号13でハイパーリンクを設定した後、行番号14で次のファイルのファイル名を取得し、ファイル名が空値になったらループを抜けます。

行番号13ではAnchor引数にA列のセルを指定し、TextToDisplay引数にファイル名を指定していますので、このプログラムを実行すると、A列にファイル名の一覧が表示され、各ファイルへのハイパーリンクが設定されます。

  1. Dim wSht As Object
  2. Dim InFolderPath As String
  3. Dim InFileName As String
  4. Dim rcnt As Integer
  5. Private Sub Sample1()
  6.     Set wSht = ActiveSheet
  7.     rcnt = 0
  8.     InFolderPath = “C:\xxxフォルダ"
  9.     InFileName = Dir(InFolderPath & “\*.xlsx")
  10.     Do While InFileName <> “"
  11.         rcnt = rcnt + 1
  12.         wSht.Hyperlinks.Add Anchor:=wSht.Cells(rcnt, 1), Address:=InFolderPath & “\" & InFileName, ScreenTip:=InFolderPath & “\" & InFileName, TextToDisplay:=InFileName
  13.         InFileName = Dir()
  14.     Loop
  15. End Sub

■ハイパーリンクが設定されたファイル一覧を基に、ファイルを一括してOPEN/CLOSEするツール

よく使うファイルをまとめてOPEN/CLOSEしたい時、ハイパーリンクを設定したファイル一覧を用意すれば、非常に簡単な処理でファイルを一括してOPEN/CLOSEできます。

ハイパーリンクから文書を開く処理

HyperlinkオブジェクトのFollowメソッドを実行すると、ハイパーリンク先の文書を開くことができます。

  1. Hyperlink.Follow([NewWindow As Variant], [AddHistory As Variant], [ExtraInfo As Variant], [Method As Variant], [HeaderInfo As Variant])

引数として指定できる項目は下表の通りで、全ての引数を省略可能です。

引数 説明
NewWindow True :新しいウィンドウに表示する
False:新しいウィンドウに表示しない(既定)
AddHistory 不使用(将来使用するために予約されています)
ExtraInfo ハイパーリンクを解決するための HTTP の追加情報を指定する文字列 (String)、またはバイト配列を指定
(イメージ マップの座標、フォームの内容、FATファイル名等)
Method ExtraInfoの接続方法を指定

0:ExtraInfoで指定した値をアドレスに追加
1:ExtraInfoで指定した値を文字列配列またはバイト配列として投稿

HeaderInfo HTTP要求のヘッダ情報を指定する文字列(String)を指定
(既定値は空の文字列)

サンプル・プログラム(1)

前掲のサンプル・プログラムで作成した、ハイパーリンクが設定されたファイル一覧を基に、ファイルを一括してOPEN/CLOSEするツールです。

(一括OPEN)
ExcelシートのA列にハイパーリンクが設定されているため、行番号6~8の繰返し処理でA列を順に処理して行き、行番号7でハイパーリンクから文書を開いています。

  1. Dim wSht As Object
  2. Dim i As Integer
  3. Private Sub 一括OPEN1()
  4.     Set wSht = ActiveSheet
  5.     For i = 1 To wSht.Cells(wSht.Rows.Count, 1).End(xlUp).Row
  6.         wSht.Cells(i, 1).Hyperlinks(wSht.Cells(i, 1).Hyperlinks.Count).Follow NewWindow:=True
  7.     Next i
  8. End Sub

(一括CLOSE)
一括OPENと同様に行番号6~8の繰返し処理でA列を順に処理して行き、行番号7でファイル名を指定してワークブックを閉じています。

  1. Dim wSht As Object
  2. Dim i As Integer
  3. Private Sub 一括CLOSE1()
  4.     Set wSht = ActiveSheet
  5.     For i = 1 To wSht.Cells(wSht.Rows.Count, 1).End(xlUp).Row
  6.         Workbooks(wSht.Cells(i, 1).Value).Close SaveChanges:=False
  7.     Next i
  8. End Sub

サンプル・プログラム(2)

Hyperlinksコレクションを使用すると、ハイパーリンクが設定されたセルの位置を意識することなく、ファイルを一括してOPEN/CLOSEすることができます。

(一括OPEN)
行番号6~8の繰返し処理でHyperlinksコレクションから順にHyperlinkオブジェクトを取出し、行番号7でハイパーリンクから文書を開いています。

  1. Dim wSht, hl As Object
  2. Dim i As Integer
  3. Private Sub 一括OPEN2()
  4.     Set wSht = ActiveSheet
  5.     For Each hl In wSht.Hyperlinks
  6.         hl.Follow NewWindow:=True
  7.     Next hl
  8. End Sub

(一括CLOSE)
一括OPENと同様に行番号6~8の繰返し処理でHyperlinksコレクションから順にHyperlinkオブジェクトを取出し、行番号7でファイル名を指定してワークブックを閉じています。

  1. Dim wSht, hl As Object
  2. Dim i As Integer
  3. Private Sub CommandButton4_Click()
  4.     Set wSht = ActiveSheet
  5.     For Each hl In wSht.Hyperlinks
  6.         Workbooks(hl.TextToDisplay).Close SaveChanges:=False
  7.     Next hl
  8. End Sub

 

国本温子(著),緑川吉行(著),できるシリーズ編集部(著)
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ

国本温子(著),緑川吉行(著),できるシリーズ編集部(著)
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ

大村あつし(著),古川順平(著)
出版社:技術評論社
発売日:2021/1/9
単行本(ソフトカバー):A5判/800ページ

高橋宣成(著)
出版社:技術評論社
発売日:2019/11/25
単行本(ソフトカバー):B5変形判/576ページ

実用ツール

Posted by hides