• ベストアンサー
  • 困ってます

【VBA】IEのリンクを新しいタブで開く

  • 質問No.6832159
  • 閲覧数2675
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 70% (14/20)

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

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

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 58% (119/204)

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)
お礼コメント
ino34

お礼率 70% (14/20)

回答ありがとうございます
おぉ!!
出来ました!!
ありがとうございました
投稿日時:2011/06/24 18:58
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ