ExcelVBA(マクロ):Internet Explorerを起動して特定のページを表示する方法/Navigateメソッドの使い方

IT

ExcelでIEを起動し、狙ったページを表示するだけのプログラムを書いてみたいと思います。

Advertisements

IEを起動する方法

IEを起動するには、まずInternet Explorerオブジェクトを作る必要があります。
IEオブジェクトを作るというのは、「IEに直接指示を出すのが無理なので、一回別のものを嚙ませる」というような意味です。課長に直接言うと角がたつので係長から注意してもらうような感じです。
先に変数をInternetExplorer型として作っておきます。

IE型変数の作成
Dim 変数名 as InternetExplorer

IE型の変数にIEを「セット」して、IEそのものとして扱えるようにします。

IEオブジェクトの作成
set 変数名 = New InternetExplorer

IEオブジェクトを主語にしてメソッド(動詞)を指定することで、IEを動かすことができます。たとえば起動は次のように書きます。

IE(InternetExplorer)を表示する
IEオブジェクト.Visible = True

visible = 「見えるようにする」なので、IEが見えるようになる=起動します。

objie

URLなど一切指定されていないIEが起動しました

ここまででエラーが出る場合

参照設定でMicrosoft Internet Controlsにチェックを付けるか、下記「MicroSoft Internet Controlsにチェックを付けないでIEオブジェクトを作る方法」を参照してください。

objie2

VBAのツールタブ→参照設定をクリックします



objie3

Microsoft Internet Controlsにチェックを付けます

URLを指定して移動(Navigate)

特定のURLに遷移するには、IEオブジェクトに対してnavigateメソッドで移動するURLを指定してあげます。

IE(InternetExplorer)を表示する
IEオブジェクト.navigate (“URL”)

objie4

IEで指定したURLへ遷移できました


今回使ったコードは次のようになります。

' vba
Option Explicit
Dim obj As InternetExplorer

Sub test()
Set obj = New InternetExplorer
' IEを起動
obj.visible = True
' ページを遷移
obj.Navigate("https://sunagitsune.com")
End Sub

別のタブでページを開く(Navigate2)

IE(InternetExplorer)でページを別タブで開く
IEオブジェクト.navigate2 “URL”, &H800
navigate2_1
Navigate2メソッドの後に、引数としてURL、&H800(または1437)と指定すると、別タブでページを新しく開くことができます。
今回は先にNavigateメソッドでページを開いてから、Navigate2メソッドで新しいタブを開きます。
navigate2_2
実行結果です。
&H800とは16進数に直した1437です。

MicroSoft Internet Controlsにチェックを付けないでIEオブジェクトを作る方法

上記の方法ではMicroSoft Internet Controlsライブラリを参照していますが、複数のPCで同じマクロを使い回す場合や、客先に納品する場合などするたびにこのチェックを付ける必要があり不便です。
CreateObject関数を使うと、このチェックを付けずにIEオブジェクトを作ることが可能です。
具体的には上のDim obj As InternetExplorer、Set obj = New InternetExplorerの部分をそれぞれこう書き変えます。

' vba
(前略)
Dim obj

Sub test()
Set obj = CreateObject(”InternetExplorer.Application")
(後略)

コメント