まりふのひと

ExcelのハイパーリンクのURLを取り出すユーザー定義関数 getURL() を作った

≪目次≫


いきさつ

 「カテゴリーに Bookmark(その後 Pending に変更) を追加した」ブログをアップした以前から、Firefox の全てのブックマークをブログに載せ、検索できるようにしたい‥‥ と準備をしていた。
方法としては、

  1. Firefoxのブックマークをhtml でエキスポートする。
    1. Firefoxのメニュー ⇒ ブックマーク ⇒[ブックマークの管理]をクリック
    2. [インポートとバックアップ]⇒ HTMLとしてエキスポート をクリック
    3. ファイル名「bookmarks.html」で保存した。
  2. 保存した bookmarks.html を開き、
  3. Excel にコピペする。

 ここまではまあ出来た。
Excel ハイパーリンクのURLを取り出すデータシート関数は無いようなので、VBAで作り終えたところで‥‥

  • そういえば、以前にも作ったなぁ~
  • ユーザー定義関数を作り、使い回しができないかなぁ~

とググっていて下記を見つけた。

  • ひっそりとExcel関数のおさらい(アドインの登録/編集/解除および削除)(引用:VBAの勉強を始めてみた)kouten0430.hatenablog.com
     作成したユーザー定義関数を常にExcelで使用したい時は、ユーザー定義関数を作成したブックをアドインとして登録する必要があります。個人用マクロブックからもユーザー定義関数を呼び出せますが、常に=PERSONAL.XLSB!BCD2BIN()のように記述する必要があるため、アドインとして登録するほうがおススメです。

 これこれ😘
早速、アドインとして登録し、長年の課題を解決してみたい...


ハイパーリンクからURLを取り出す関数

 Google先生に聞いたら、使われているコードの説明もある「ジャストのサイト」が見つかった。

作成したgetURL()

 上記を参考に、下記とした。

01.'概要:ハイパーリンクのアドレスを返す。
02.'作成:2021-06-12
03.Function GetURL(argHPLink As Range) As String
04.
05.    If argHPLink.Hyperlinks.Count > 0 Then
06.        With argHPLink.Hyperlinks(1)
07.            GetURL = .Address
08.        End With
09.    Else
10.        GetURL = ""
11.    End If
12.
13.End Function

ユーザー定義関数として保存後、アドインに登録する

 方法は文頭にある「ひっそりとExcel関数のおさらい(アドインの登録/編集/解除および削除)」に沿って行った。

  1. アドインの登録
    標準モジュールなどにユーザー定義関数(Functionプロシージャ)が記述されたブックを、ファイルの種類をExcelアドイン(*.xlam)にして、任意の名前を付けて保存します。
    • ファイル名は UsersFunction.xlamとした。
  2. 保存場所は、ファイルの種類を「Excelアドイン(*.xlam)」を選択すると、サイトどおりの \AppData\Roaming\Microsoft\AddIns になったので、そのまま保存した。
  3. アドインとして登録する
    1. Excelを起動する
    2. ファイル ⇒ オプション ⇒ アドイン と進み、
    3. [設定]をクリック
    4. UsersFunction にチェックを入れ、[OK]

Excelから呼び出すには

  1. Excelを起動
  2. [関数の挿入]をクリック
  3. 関数の分類を「ユーザー定義」にする。
  4. 関数名の「getURL」を選択し[OK]
  5. f:id:ogohnohito:20210618182342p:plain:right:w480引数にハイパーリンクのセルを指定し[OK]