タグ別アーカイブ: vba

Excel vba でIEを操作してみる 【 IEがすでに起動しているかどうかの判別 】

Dim ie_obj As Object
Dim ObjShell As Object
Dim ObjWindow As Object
Dim WinExist As Boolean
Dim WinPage As String

WinExist = False
Set ObjShell = CreateObject(“Shell.Application”)
For Each ObjWindow In ObjShell.Windows
  If TypeName(ObjWindow.Document) = “HTMLDocument” Then
    WinExist = True
    Set ie_obj = ObjWindow
    If ie_obj.locationName = “Google” Then
      WinPage = “opend”
    End If
  End If
Next
‘ WinExist、IEが起動していたらTrueにするが、最初はFalse

‘ For Each でウィンドウがある限り繰り返し処理
‘ そのウィンドウのドキュメントタイプがHTMLかどうか
‘ HTMLならIEなのでWinExistにTrueを代入
‘ 見つけたIEをオブジェクトに代入
‘ さらに、そのロケーションネーム(タイトル)がGoogleかどうか
‘ GoogleならWinPageを”opened”にする

WinExist や WinPage なんてのはあってもなくても良いけど、

「IEが起動していなければ立ち上げる」とか
「IEは起動しているけど、目的のページ(タイトル)ではないから移動する」とか

そんな条件分岐に使ったりしても良いかと。

また、「locationName」を「locationURL」とすればURLを取得できるので、特定のURLを探し出したりすることもできる。

他にも

ie_obj.Name
ie_obj.Path
ie_obj.FullName
ie_obj.Width
ie_obj.Height
ie_obj.Left
ie_obj.Top
名前(Internet Explorer と入る)
パス(ディレクトリ名まで)
フルパス(ファイル名まで)
ウィンドウの横幅
ウィンドウの高さ
ウィンドウの左端からの位置
ウィンドウの上端からの位置

といった感じで情報を取得できる。

Excel vba でIEを操作してみる 【 とにかくまずはIEを起動 】

下記3行で、IEは起動する。

Set ie_obj = CreateObject(“InternetExplorer.Application”)
ie_obj.Visible = True
ie_obj.Navigate2 “http://www.google.co.jp”

基本的にはこれだけなんで、簡単。

ここで Navigate2 というのをつかっているけど、Navigate というのももちろんある。
が、特に理由がなければ 2 を使った方が良いでしょう。
後々「新規タブで開きたい」なんて時には 2 でないとできないことがあるので。

ちなみに、新規タブで開くには

ie_obj.Navigate2 “http://www.google.co.jp”, 2048

と第二引数に「2048」を指定する。(16進数で「&H800」とかでもいい)
また、ここを「4096」(16進数では「&H1000」)にすると、新規タブで開くけど、非アクティブな状態になる。

 
 
そのほか、知っていると便利なオプションがいくつか

「objIE.Visible = True / False」
 IEの表示・非表示設定。Trueで表示。
 IEの操作開始時はFalseにしておいて、一通りそうさが終わったらTrueにすると良いかも。
 まぁ、自動でIEが操作されて画面が遷移していくのを眺めてるのも面白いけどね。

「objIE.FullScreen = False」
 フルスクリーン表示にするかウィンドウ表示にするか。
 デフォルトはFalseでウィンドウ表示。フルスクリーンにしたければTrueに。

「objIE.Top = 100」
「objIE.Left = 100」
「objIE.Width = 800」
「objIE.Height = 600」
 位置情報の指定。そのまま、ですな。

「objIE.Toolbar = True / False」
 ツールバーの表示・非表示を設定。デフォルトはTrueで表示する。

「objIE.MenuBar = True / False」
 メニューバーの表示・非表示を設定。デフォルトはTrueで表示する。
 ただ、IE7以上では見かけ上、メニューバーが表示されない。
 「Alt」を押すとでてくるので、あえてこれをFalseにするのは対象がIE6の時くらいかな?
 尚、ツールバーを非表示にすると、メニューバーも自動的に非表示設定になる。
 メニューバーをTrueにしてもツールバーがFalseだと表示されない。
 
「objIE.AddressBar = True / False」
 アドレスバーの表示・非表示を設定。デフォルトはTrueで表示する。
 これもツールバーを非表示にすると自動的に非表示設定になる。
 しかし、ツールバーをFalseにした後に、アドレスバーをTrueにすれば表示できる。
 (各順番が逆になると当然表示されない)

「objIE.StatusBar = True / False」
 ウィンドウ最下部のステータスバーの表示・非表示設定。デフォルトはTrueで表示する。