ExcelでウェブURLからページタイトルを取得したいときがあります。
実はウェブURLからページ名を取得するExcel関数は標準では実装されていませんが、Excelの機能を上手く活用すれば、Excel関数として使うことができます。
このページでは、ウェブURLからページタイトルを取得するExcel関数を紹介します。
目次
VBAを活用してウェブリンクからページタイトルをExcel関数として実装させる
– 引数1:セルの指定
このページで紹介するVBAプログラムをFunctionプロシージャとして設定しておくと、上記のPageTitle関数によってウェブリンクからウェブページのタイトルを取得できます。
引数1で指定したセルのウェブURLの情報をもとに処理を行い、ウェブページのタイトルを出力します。
関数の処理時間は1セルあたり約1秒
今回紹介するエクセル関数は、タイムラグがあり一つのセルあたり1.0秒程度の処理時間がかかります。
この程度のタイムラグであれば、仕事に大きな影響を及ぼすものではないと思います。
ただし複数セルをまとめてPageTitle関数を使うと、タイムラグが発生することがあります。
このデメリットについては後述していますので、気になる方はご覧ください。
GoogleTranslate関数を実装したExcelをダウンロードする
このページで紹介しているGoogleTranslate関数を実装したExcelファイル(VBAを実装したファイル)をすぐに使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへ「VBAプログラムが含まれたエクセル」を送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
Excel関数としてGoogleTranslateを使う方法|作成手順
ExcelでGoogleTranslateを関数として使用するための手順を紹介します。
手順1. VBAプログラムをExcelに設定する
以下のVBAを
VBAのプログラムソース解説
今回使用するVBAプログラムの概要は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
'プログラム0|変数設定の指定 Option Explicit 'プログラム1|プログラム開始 Function PageTitle(rng) As String 'プログラム2|指定したセルの値をurlとして取得 Dim url As String url = rng.Value 'プログラム3|HTTPリクエスト設定 Dim objHTTP As XMLHTTP60 Set objHTTP = New XMLHTTP60 'プログラム4|URLで指定したウェブページの情報をGETリクエストで取得 With objHTTP .Open "GET", url .send End With 'プログラム5|HTTPリクエストの読み込み完了を待つ Do While objHTTP.readyState < 4 DoEvents Loop 'プログラム6|ウェブページの情報をテキストで取得 Dim oHtml As New MSHTML.HTMLDocument Set oHtml = New MSHTML.HTMLDocument oHtml.body.innerHTML = objHTTP.responseText 'プログラム7|titleタグをテキストとして取得 Dim title As String title = oHtml.getElementsByTagName("title")(0).innerText 'プログラム8|C列にtitleを書き込む If title <> "" Then PageTitle = title Else PageTitle = CVErr(xlErrValue) End If 'プログラム9|オブジェクト解放 Set oHtml = Nothing Set objHTTP = Nothing 'プログラム10|プログラム終了 End Function '関数の説明 Sub RegisterFormula() '関数名の設定 Dim strFunc As String strFunc = "PageTitle" '関数の説明 Dim strDesc As String strDesc = "ウェブページの件名を取得" & vbNewLine & vbNewLine & _ "セルA1で指定されたURLのウェブページの件名を取得、=PageTitle(A1)" '関数内の引数の説明 Dim strArgs(0) As String strArgs(0) = "セルを選択" '関数説明を実行 Application.MacroOptions Macro:=strFunc, Description:=strDesc, ArgumentDescriptions:=strArgs, Category:="Custom Category" End Sub |
上記のプログラムをVBAの標準モジュールに設定します。
VBA作成の事前準備
ExcelでVBAを使う方法がよく分からなかったり不安があったりする人は、以下の動画をご覧ください。
入門エクセルマクロの使い方|マクロ作成から実行までを徹底解説
上記の動画の内容は、以下のページで解説をしています。
手順2. PageTitle関数を使う
上記のVBAをExcelに設定することで、以下のエクセル関数を使うことができます。
上記のように入力することで、A2にウェブリンクが入力されており、セルB2に「=PageTitle(A2)」と入力します。
そうすると、自作のエクセル関数Pagetitleの結果として、以下のようにA2のウェブページに紐づくタイトルをB2に出力します。
手順の解説はここまでとなります。
注意点
このエクセル関数は1セルあたりの処理時間が約1秒あります。
HTTPリクエストによりウェブ通信を行っているため、そのタイムラグにより1秒程度の処理時間が必要になります。
したがって一度に100セルのような大量セルに対して、この関数を実行すると、エクセルが固まります。
また数式の再計算をONにしていると、エクセルで計算処理するたびに、本ページの関数処理が実行されることになり、そのたびにエクセルが固まるリスクがあります。
なおデフォルトで数式の再計算はONとなっていますので、注意が必要です。
類似の事例のほうが使いやすい場合もある
ウェブページの件名を取得するVBAについては、以下で類似のものを説明しています。
エクセルが固まるほどの大量のURLを一度に処理したい場合は、以下のページで紹介しているサンプルのほうが使い勝手が良いかもしれません。
用途によって使い分けるのがよいかと思います。
エクセル仕事を効率化する事例
ここではエクセル関数でウェブページのタイトルを取得する方法を紹介しました。
しかしこれ以外にもエクセル仕事を効率化する関数は数多く存在します。
以下のページで事例を合わせて紹介していますので、参考にしてみてください。
またエクセル関数に限らず、エクセル仕事を改善したい場合は、以下のページも参考になるはずです。