プロが教える店舗&オフィスのセキュリティ対策術

VBAでIEを制御しリンク(アンカー)<a href="***">を新しいタブで開くようにしたいのですが可能でしょうか?

仮にグーグルのトップページ(http://www.google.co.jp/)の『検索オプション』(http://www.google.co.jp/advanced_search?hl=ja)を新しいタブで開くとします
実際に開きたいリンクのURLは固定ではないためURLの指定では開けませんが、飛びたいリンクの文言(『検索オプション』)は固定です

リンクに飛ぶ前に飛ぶ先のURLを取得する仕方か、Shift+Ctrl+クリックのようにリンクを新しいタブで開く方法を教えてください

一度普通にリンクに飛んでからURLを取得し、戻ってから新しいタブで開くぐらいしかできないのでしょうか?

Sub 新しいタブで開く()
Dim objIE As Object
Dim objShell
Dim URL As String

Set objShell = CreateObject("Shell.Application")
For n = objShell.Windows.Count To 1 Step -1
Set objIE = objShell.Windows(n - 1)
If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then
objIE.Navigate "http://www.google.co.jp/"
Exit For
End If
Next
Set objShell = Nothing
objIE.Visible = True
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
For Each Obj In objIE.Document.getElementsByTagName("a")
If Obj.innerText = "検索オプション" Then
Obj.Click
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
URL = objIE.Document.URL
objIE.GoBack
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
objIE.Navigate URL, CLng(&H800)
Exit For
End If
Next
End Sub

よろしくお願いいたします

A 回答 (1件)

ino34さん こんにちは。


検索オプションのURLを取得すれば良いのですよね?

For Each obj In objIE… 以下を次のように変更すれば良いかと思います。

For Each obj In objIE.Document.getElementsByTagName("a")
  If obj.innerText = "検索オプション" Then
    objIE.Navigate obj.href, CLng(&H800)
    Exit For
  End If
Next

注)次の部分のみ変更し、不必要なステートメントは削除しています。
  objIE.Navigate URL, CLng(&H800)
         ↓
  objIE.Navigate obj.href, CLng(&H800)
    • good
    • 1
この回答へのお礼

回答ありがとうございます
おぉ!!
出来ました!!
ありがとうございました

お礼日時:2011/06/24 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!