今回はマクロのコードの中にハイパーリンクを直接書き込んで出力する方法を紹介したいと思います。
ハイパーリンクを挿入するメソッドに「Hyperlinks.Add」がありますが、それが使えない場合などに役に立つかもしれないので、是非覚えておいていただければと思います!
過去にVBAに関する記事を投稿していますので、是非こちらも併せてご覧ください!
注意点
コードの中にハイパーリンクを直接書き込む時に気を付けなければいけないことがあります。それが特定の文字をエスケープしなければならない点です。
というのも、今回文字列を囲む為に使用する””(ダブルクォーテーション)を文字列として出力する為、シート上で入力していた時と同じように入力するとエラーになってしまうからです。
じゃあどうやってエスケープするの?
と言うと、ダブルクォーテーションを続けて2回入力することでエスケープできます。
以下、エスケープのサンプルコードです。
Sub test_Escape()
MsgBox """はりぼなブログ"""
End Sub
実行すると以下のように表示されます。ダブルクォーテーションも一緒に表示されています。
このように、エスケープを施すことで普通には出力できない文字列も出力できるようになります。是非覚えておきましょう!
ハイパーリンクを直接書き込む方法
それではハイパーリンクを直接書き込む方法の紹介です。今回は、
- 全て文字列で書く方法
- 変数も組み込む方法
上記2点それぞれ例を交えて紹介したいと思います。
全て文字列で書く方法
まず全て文字列で書く方法です。それぞれパターン毎にコードを載せておきます。
今開いているシート内の指定されたセルに移動する
Sub AddHyperLink_SelectCells()
With ThisWorkbook.ActiveSheet
.Range("A1") = "=HYPERLINK(""#B1"",""■"")"
End With
End Sub
別シートのセルに移動する
Sub AddHyperLink_SelectShtCells()
With ThisWorkbook.ActiveSheet
.Range("A1") = "=HYPERLINK(""#Sheet1!A1"",""■"")"
End With
End Sub
別ブックを開く
Sub AddHyperLink_SelectBook()
With ThisWorkbook.ActiveSheet
.Range("A1") = "=HYPERLINK(""C:\a\はりぼなブログ\target.xlsx"",""■"")"
End With
End Sub
別ブックを開く&指定されたシートの指定されたセルに移動する
Sub AddHyperLink_OpenBookAndSelectShtCells()
With ThisWorkbook.ActiveSheet
.Range("A1") = "=HYPERLINK(""C:\a\はりぼなブログ\target.xlsx#Sheet1!B5"",""■"")"
End With
End Sub
実行するとシートにハイパーリンクが挿入され、クリックするとそれぞれ指定したセルにジャンプします。
また、アクティブになっているシート or 別のシートを指定する場合は#(シャープ記号)を入力する必要があります。
別シートの参照方法については下記記事で紹介していますので、こちらをご覧ください!
変数を組み込む方法
次に変数を組み込む方法です。基本的には全て文字列で書く方法と変わりませんが、変数を結合する為に&(アンド記号)を使います。
Sub AddHyperLink_Val()
Dim target_path As String
target_path = "C:\a\はりぼなブログ\target.xlsx"
With ThisWorkbook.ActiveSheet
.Range("A1") = "=HYPERLINK(""" & target_path & """,""■"")"
End With
End Sub
実行すると同じようにハイパーリンクが挿入されます。
変数の中身を書き換えるだけでリンク先を容易に変更できるので、個人的にはこちらの方がお勧めです。私もこちらを使っています。
まとめ
今回はマクロのコードの中にハイパーリンクを直接書き込んで出力する方法を紹介しました。
ハイパーリンクを直接コード内に入力するときは、
- ””(ダブルクォーテーション)を2回入力してエスケープする
- シートも指定する場合は#(シャープ記号)を入力する
- ダブルクォーテーションの数・囲み忘れに注意する
上記3点に気を付けて使用して頂ければと思います!
コメント