こんにちは!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