ホームページ(URL)を開く


VBAでホームページを開くにはいくつかの方法があります。

ExcelのHyperlinkを使う方法(1)

Excelには指定したURLを開くハイパーリンク機能があります。これを使うと、VBAから指定したページを開くことができます。次のコードは、セルA1に定義されているハイパーリンクを実行します。

Sub Sample1()
    Range("A1").Hyperlinks(1).Follow NewWindow:=True
End Sub

HyperlinkオブジェクトのFollowメソッドは、指定したハイパーリンクをクリックするのと同じ動作を実行します。開きたいURLが、セルに入力されている場合に便利な方法です。

ExcelのHyperlinkを使う方法(2)

ワークシート上にはハイパーリンクを設定せず、VBA内で開くURLを指定するには次のようにします。

Sub Sample2()
    ActiveSheet.Hyperlinks.Add(Anchor:=Range("A1"), _
                      Address:="http://www.officetanaka.net/", _
                      TextToDisplay:="Office TANAKA").Follow
End Sub

ワークシート上にハイパーリンクがなければ作ってやればいいんです。ここでは、アクティブシートのセルA1にダミーのハイパーリンクを設定し、それをFollowメソッドで実行します。

どのセルにダミーのハイパーリンクを設定するかがポイントです。安全性を高めるのなら、新しいシートを挿入するといいでしょう。Followメソッドの後は、挿入したシートごと削除します。この方法は「UserForm上にハイパーリンクを作る」で解説していますのでご覧ください。新しいシートを挿入してもマクロの体感速度は変わりません。

拡張子関連づけで開く方法(1)

エクスプローラなどで拡張子が「htm」や「html」のファイルをダブルクリックすると、標準のブラウザが起動してダブルクリックしたURLのページが開きます。これは、Windowsの拡張子関連づけという機能です。この拡張子関連づけでURLを開くにはAPIを使います。

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                       (ByVal hwnd As Long, ByVal lpOperation As String, _
                        ByVal lpFile As String, ByVal lpParameters As String, _
                        ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub Sample3()
    Dim URL As String, rc
    URL = "http://www.officetanaka.net/"
    rc = ShellExecute(0, "Open", URL, "", "", 1)
End Sub

拡張子関連づけで開く方法(2)

ちょっと発想を変えると、APIを使用しなくても拡張子関連づけ機能を利用できます。それには、WSH(Windowsスクリプティングホスト)を使います。WSHに関する解説は割愛します。興味がある方はインターネット上を検索してください。使い方を解説したページがたくさん見つかるはずです。

Sub Sample4()
    Dim WSH
    Set WSH = CreateObject("Wscript.Shell")
    WSH.Run "http://www.officetanaka.net/", 3
    Set WSH = Nothing
End Sub

IEを指定して開く方法(1)

拡張子関連づけでページを開くと、拡張子に関連づけられているブラウザでページを開きます。そうではなく、Internet Explorer(IE)を指定してページを開くには、いっそのこと直接IEを起動してしまいましょう。

Sub Sample5()
    Shell "EXPLORER.EXE http://www.officetanaka.net/"
End Sub

IEの実体はIEXPLORE.EXEです。通常IEXPLORE.EXEはC:\Program Files\Internet Explorer\IEXPLORE.EXEにあります。このフォルダにはパスが通っていませんので「Shell "IEXPLORE.EXE http://www.officetanaka.net/"」のように指定すると"実行ファイルが見つからない"というエラーになります。ではIEXPLORE.EXEが保存されているパスをレジストリで調べて……と面倒なことをする必要はありません。ファイルを管理するエクスプローラを、引数にURLを指定して起動すると、IEでページが表示される仕組みになっているんです。エクスプローラの実体はEXPLORER.EXEです。このEXPLORER.EXEは通常C:\Windowsフォルダにあります。このC:\Windwosフォルダにはパスが通っていますので、EXPLORER.EXEだけで起動できます。

IEを指定して開く方法(2)

IEを高度に制御したいのなら、オートメーションでIEのインスタンスを使いましょう。

Sub Sample6()
    Dim URL As String, IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    URL = "http://www.officetanaka.net"
    With IE
        .Navigate (URL)
        .Visible = True
    End With
    Set IE = Nothing
End Sub

CreateObject関数でIEを制御すれば、IE本体を非表示にしたり、ページの本文をテキスト形式で保存したり、IDやパスワードなどが必要なページを表示することも可能です。