Excel VBA

【Excel VBA】【マクロ】【Tips】リンク先のシート名を取得するマクロ

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回はリンク先のシート名を取得するマクロです!

リンク先のシート名を取得するマクロ

B3セルに別シートへのリンク、B5セルにWebページへのリンクを設定しました。

Hyperlinkオブジェクトを使って、
これらのリンク先を取得してみましょう!
そしてシートへのリンクは、LEFT関数とInStr関数を使ってシート名のみ取得してみましょう。

コード

Sub GetLinks()
    '同ブック内のシートへのリンク
    MsgBox Range("B3").Hyperlinks.Item(1).SubAddress 
    'ウェブページのリンク
    MsgBox Range("B5").Hyperlinks.Item(1).Address           

    'シート名のみ取得
    MsgBox Left(Range("B3").Hyperlinks.Item(1).SubAddress,InStr(Range("B3").Hyperlinks.Item(1).SubAddress, "!") - 1)
    
End Sub

コードの説明

同ブック内のシートへのリンクを表示しています。
参照先はSheet40のA1なので、「Sheet40!A1」と表示されます。

ウェブページのリンクへのリンクを表示しています。
「https://lenoco.tokyo/」と表示されます。

続いて、同ブック内のシートのリンクから、シート名部分のみ抜き出します。
LEFT関数の文字数の部分で、InStr関数を使い、「!」の文字番号マイナス1の数字を設定します。
そうすることで、「!」の一つ手前までの文字、つまりシート名「Sheet40」の部分のみ抜き取ることができます。

補足

なお、AddressとSubAddressの違いですが、
AddressにはURLやファイルのフルパスが入り、
SubAddressには、参照先のシートやセルが入ります。
例えば今回の「同ブック内のシートへのリンク」の場合、
SubAddressにしか値は入りませんが、外部ファイルのシートへのリンクだった場合、
Addressにその外部ファイルのパスが入ることになります。

さいごに

案件でリンクからシート名を取得する必要があり、
いろいろ調べ、今回の記事を作りました!
「マクロでこんなことができるんだ~」がまた一つ増えました!
ぜひ使ってみてください!

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です