VBAでホームページを開くにはいくつかの方法があります。
Excelには指定したURLを開くハイパーリンク機能があります。これを使うと、VBAから指定したページを開くことができます。次のコードは、セルA1に定義されているハイパーリンクを実行します。
Sub Sample1() Range("A1").Hyperlinks(1).Follow NewWindow:=True End Sub
HyperlinkオブジェクトのFollowメソッドは、指定したハイパーリンクをクリックするのと同じ動作を実行します。開きたいURLが、セルに入力されている場合に便利な方法です。
ワークシート上にはハイパーリンクを設定せず、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上にハイパーリンクを作る」で解説していますのでご覧ください。新しいシートを挿入してもマクロの体感速度は変わりません。
エクスプローラなどで拡張子が「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
ちょっと発想を変えると、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
拡張子関連づけでページを開くと、拡張子に関連づけられているブラウザでページを開きます。そうではなく、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を高度に制御したいのなら、オートメーションで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やパスワードなどが必要なページを表示することも可能です。