Excel VBAで実用ツール(Hyperlink編)
■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オブジェクト |
||||||||||
定義 | Property Type() As Long |
■指定したフォルダ下のファイル一覧を作成し、ハイパーリンクを設定するツール
指定したフォルダ下のファイルを一覧にする処理とハイパーリンクを作成する処理を組合せると、ハイパーリンク付のファイル一覧を簡単に作成することができます。
ハイパーリンクを作成する処理
HyperlinksコレクションのAddメソッドを実行すると、ハイパーリンクを作成できます。
- 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列にファイル名の一覧が表示され、各ファイルへのハイパーリンクが設定されます。
- Dim wSht As Object
- Dim InFolderPath As String
- Dim InFileName As String
- Dim rcnt As Integer
- Private Sub Sample1()
- Set wSht = ActiveSheet
- rcnt = 0
- InFolderPath = “C:\xxxフォルダ"
- InFileName = Dir(InFolderPath & “\*.xlsx")
- Do While InFileName <> “"
- rcnt = rcnt + 1
- wSht.Hyperlinks.Add Anchor:=wSht.Cells(rcnt, 1), Address:=InFolderPath & “\" & InFileName, ScreenTip:=InFolderPath & “\" & InFileName, TextToDisplay:=InFileName
- InFileName = Dir()
- Loop
- End Sub
■ハイパーリンクが設定されたファイル一覧を基に、ファイルを一括してOPEN/CLOSEするツール
よく使うファイルをまとめてOPEN/CLOSEしたい時、ハイパーリンクを設定したファイル一覧を用意すれば、非常に簡単な処理でファイルを一括してOPEN/CLOSEできます。
ハイパーリンクから文書を開く処理
HyperlinkオブジェクトのFollowメソッドを実行すると、ハイパーリンク先の文書を開くことができます。
- 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で指定した値をアドレスに追加 |
HeaderInfo | HTTP要求のヘッダ情報を指定する文字列(String)を指定 (既定値は空の文字列) |
サンプル・プログラム(1)
前掲のサンプル・プログラムで作成した、ハイパーリンクが設定されたファイル一覧を基に、ファイルを一括してOPEN/CLOSEするツールです。
(一括OPEN)
ExcelシートのA列にハイパーリンクが設定されているため、行番号6~8の繰返し処理でA列を順に処理して行き、行番号7でハイパーリンクから文書を開いています。
- Dim wSht As Object
- Dim i As Integer
- Private Sub 一括OPEN1()
- Set wSht = ActiveSheet
- For i = 1 To wSht.Cells(wSht.Rows.Count, 1).End(xlUp).Row
- wSht.Cells(i, 1).Hyperlinks(wSht.Cells(i, 1).Hyperlinks.Count).Follow NewWindow:=True
- Next i
- End Sub
(一括CLOSE)
一括OPENと同様に行番号6~8の繰返し処理でA列を順に処理して行き、行番号7でファイル名を指定してワークブックを閉じています。
- Dim wSht As Object
- Dim i As Integer
- Private Sub 一括CLOSE1()
- Set wSht = ActiveSheet
- For i = 1 To wSht.Cells(wSht.Rows.Count, 1).End(xlUp).Row
- Workbooks(wSht.Cells(i, 1).Value).Close SaveChanges:=False
- Next i
- End Sub
サンプル・プログラム(2)
Hyperlinksコレクションを使用すると、ハイパーリンクが設定されたセルの位置を意識することなく、ファイルを一括してOPEN/CLOSEすることができます。
(一括OPEN)
行番号6~8の繰返し処理でHyperlinksコレクションから順にHyperlinkオブジェクトを取出し、行番号7でハイパーリンクから文書を開いています。
- Dim wSht, hl As Object
- Dim i As Integer
- Private Sub 一括OPEN2()
- Set wSht = ActiveSheet
- For Each hl In wSht.Hyperlinks
- hl.Follow NewWindow:=True
- Next hl
- End Sub
(一括CLOSE)
一括OPENと同様に行番号6~8の繰返し処理でHyperlinksコレクションから順にHyperlinkオブジェクトを取出し、行番号7でファイル名を指定してワークブックを閉じています。
- Dim wSht, hl As Object
- Dim i As Integer
- Private Sub CommandButton4_Click()
- Set wSht = ActiveSheet
- For Each hl In wSht.Hyperlinks
- Workbooks(hl.TextToDisplay).Close SaveChanges:=False
- Next hl
- End Sub
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ
出版社:技術評論社
発売日:2021/1/9
単行本(ソフトカバー):A5判/800ページ
出版社:技術評論社
発売日:2019/11/25
単行本(ソフトカバー):B5変形判/576ページ
ディスカッション
コメント一覧
まだ、コメントがありません