【1行マクロ】ハイパーリンクを貼る【ExcelVBA】
Excelのマクロに不慣れな方には、まず1行マクロから慣れていくことをおすすめしています。1行マクロというのは、Excel上1行だけにマクロを実行するものです。
1行マクロの中から、今回はハイパーリンクを貼る方法を紹介します。
例
次のようなファイルがあります。
場所はCドライブの直下にあるtemp\20221030chieというフォルダの中です。
こういうExcelがありまして、
A列の3行目からアンケート結果のハイパーリンクを貼りたいなーーーという要望があったとき、どうしますか?という問題です。
マクロの記録
1行マクロはマクロの記録を利用するのが基本です。
図のように、セルA3をアクティブにした状態で、マクロの記録を開始します。
図のように、マクロの記録のボックスが開いたら、ショートカットキーのところにはShift+Eを入力してください。
1行マクロのときにはCtrl+mとすることが私は多いのですが、今回はハイパーリンクなので、もともとハイパーリンクはCtrl+Eで貼れることがあるので、それにちなんでCtrl+Shift+Eにしてみました。
別にCtrl+mでもいいです。この辺は好みの問題です。
マクロの記録が開始したら、↑この図のようにセルA3上で右クリック→リンクを選び→さらにリンクを挿入を選びます。
図のように、ハイパーリンクの挿入が開いたらファイルの参照を選び、ハイパーリンクしたいファイルを選びます。
図のように、ハイパーリンクしたいファイルを選んだら、OKを押します。
「ファイルにリンク」のボックスでもOKを押します。
図のように、ハイパーリンクが挿入されます。これでマクロの記録は終了します。
コードの編集
Alt+F11を押します。VBEが起動します。
Option Explicit
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+E
'
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\temp\20221030chie\アンケート回答者A.xlsx", TextToDisplay:="Aのアンケート"
End Sub
コードの説明を少ししておきます。
ActiveSheetというのは、現在アクティブなシートのことです。
ActiveSheet.Hyperlinksというのは、アクティブなシートに属するHyperlinksコレクションのことです。
.Addとありますから、Hyperlinksコレクションに追加しています。
追加する内容はHyperlinkというオブジェクトです。オブジェクトの内容は、AnchorオプションとAddressオプションとTextToDisplayオプションの三つのオプションで決まります。
ここでちょっと注意。Hyperlinksコレクションのアイテムは、Hyperlinkと決まっています。小文字のsが付くかつかないかで、コレクションかそのアイテムかを見分けています。
また、オプションを指定するときは「=」でなく「:=」を使います。オプションが複数あるときは「,」(カンマ)でつなぎます。1行が異様に長くなるようなら、行末に「 _」(半角スペースとアンダーバー)を入れます。
Anchorオプションにはハイパーリンクを貼りたいセルオブジェクトを指定します。マクロの記録ではSelectionが入りましたが、Selectionだと「現在選択されているセル」という意味になり、あいまいなので、ActiveCellにします。
AddressオプションにはString型でファイルへのパスを指定します。
TextToDisplayオプションもString型です。
コードを次のように加工します。
Option Explicit
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+Shift+E
'
Dim stText As String '追加------(1)
Dim stName As String '追加------(1)
stText = ActiveCell.Value '追加-----(2)
stName = Left(stText, 1) '追加-----(3)
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:= _
"C:\temp\20221030chie\アンケート回答者" & stName & ".xlsx", TextToDisplay:=stText
'↑一部修正---------(4)
ActiveCell.Offset(1, 0).Select '追加------(5)
End Sub
加工したコードの説明をします。
(1)追加した変数は二つです。どちらもString型です。ひとつはTextToDisplayオプションで使う用(stText)で、もう一つはAddressオプションで使う用(stName)です。
(2)ではstTextにハイパーリンクを貼る前のセルの値を格納しています。
(3)では、stTextという変数に格納された値の、先頭の1文字分だけを切り出して、stNameという変数に格納しています。
(4)ではAnchorのところをSelectionからActiveCellに変更しました。また、AddressオプションとTextToDisplayオプションの内容を、stNameとstTextを使うように変更しました。
(5)はマクロの記録では記録していないコードです。現在アクティブなセルの1行下のセルを選択しなさいという意味のコードです。
実行
ワークシートに戻って実験してみます。
図のように、セルA4を選択した状態でCtrl+Shift+Eとすると
図のように、無事ハイパーリンクが挿入され、選択されているセルが1行下のセルに移動しました。
これを次々に実行していくと、
図のように、複数行のハイパーリンクが一気にできました。
なお、ハイパーリンクを開こうとすると、
図のような警告メッセージが表示されることがありますが、これはセキュリティに応じて表示されるものですので、お使いの環境では表示されないこともあります。もし表示されたら「はい」を選んでください。
-
前の記事
荒木尚志「労働時間の法的構造」 2022.10.30
-
次の記事
労働基準法は故意犯だけを処罰 2022.11.01