![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんばんは。やりたいことができないので教えてください。
vbaで指定のurlを開きたいです。
エクセル2003とIE8です。
Sub test001()
Dim ObjIE As Object
Set ObjIE = CreateObject("InternetExplorer.application")
ObjIE.Visible = True
ObjIE.navigate "http://jp.msn.com/"
Do While ObjIE.Busy = True '表示させるまで待つ
DoEvents
Loop
End Sub
これでIEを立ち上げてURLを開けるのですが
これでは新しいウインドウで開いてしまいます。
現在IEを立ち上げていて、上記のコードを実行すると
新たなタブで開きたいですが解決策はありますか?
ObjIE.Visible = True が原因かと思い、これを抜かしてみましたが
そうすると何も起こりません。
VBAで既に開いているIEの新しいタブでURLを開く方法をご教授ください!よろしくお願いします。
No.7
- 回答日時:
こんにちは。
#2,#3の回答者です。
>そうなんですか。
>もっと勉強します。
「そうなんですか」といわれる意味がさっぱり理解できません。私の言っているのは、間違っているという意味なんでしょうけれども、率直に、「分からない」と言っていただいたほうがよいと思います。回答者は、質問に対して、解決に結びつけると思って書いているのですから、解決の手立てとして書いていることに対して、そういう返事の仕方は、良くないと思います。
即効するコードを得られるとは限りませんから、違うならきちんと説明してください。それは他の方のためでもあります。ある程度、VBAの力があれば、#1さんの回答で、すべて解決していたはずでした。
ただ、一応、どういうつもりなのか、こちらは分かりませんが、ひとつプロシージャでタブにURLを入れるコードを出しておきます。あくまで、私のオリジナルです。
'-------------------------------------------
Sub TestMacro1()
Dim objIE As Object
Dim objShellWindows As Object
Dim w As Variant
Const navOpenInNewTab As Long = &H800
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "http://www.google.co.jp/"
Do While objIE.Busy = True
DoEvents
Loop
'-------------------------------------------
'私の書いたコードのつけたし
Application.Wait Now() + TimeSerial(0, 0, 2) ''2秒
Set objShellWindows = CreateObject("Shell.Application").Windows()
For Each w In objShellWindows
If TypeName(w) = "IWebBrowser2" Then
Set objIE = w
Exit For
End If
Next
If Not objIE Is Nothing Then
objIE.Navigate2 "http://jp.msn.com/", navOpenInNewTab
End If
Set objShellWindows = Nothing
End Sub
p.s.GoogleやMSNなどの有名どころのURLは、直接、コードに書いてもペンディング状態にならないと思います。
気に障ったようでしたら、謹んでお詫びしておきます。申し訳ありません。
知識が乏しく理解できなかったためあのような回答をしてしまいました。以後気をつけます。
再度ありがとうございます。
じっくり試してみます。
No.6
- 回答日時:
[回答番号:No.5] の DOUGLAS_ です。
#前回答も今回の回答も「http」の最初の「h」は半角に書き換えてお試しください。
>vbaで指定のurlを開きたいです。
でしたね。
ただ「指定のurlを開きたい」だけでしたら、[タブ ブラウズ の設定] ダイアログ での設定が普通にできていれば、
Sub Macro()
ActiveWorkbook.FollowHyperlink "http://jp.msn.com/"
End Sub
だけで十分かと存じます。
ただし、「指定のurlを開」いたあとに、VBA で何某かの処理をなさりたい、というようなことでしたら、
Sub Macro()
Dim objShell As Object
Dim objIE As Object
Dim SWC 'As Long
Set objShell = CreateObject("Shell.Application")
SWC = objShell.Windows.Count
ActiveWorkbook.FollowHyperlink "http://jp.msn.com/"
Set objIE = objShell.Windows(SWC)
'何某かの処理
End Sub
のようにして、「objIE.Document.Title」というように プロパティ を指定してください。
#ちなみに、[回答番号:No.5] は、エクスプローラ も IE も開いていない場合の エラー処理 は施しておりません。
ActiveWorkbook.FollowHyperlink "http://jp.msn.com/"
これでもできることを忘れてました!
ありがとうございます。
No.5
- 回答日時:
●特定の Web サイトに対して開く Internet Explorer ウィンドウがあるかどうかを確認する方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …
によりますと、[CreateObject 関数] によって作成された「shell.application」 の「windows コレクション」には「Windows エクスプローラ」または「Internet Explorer」の 実行インスタンス が表示されます。
ということで、上記 URLや、よく参照される VBA 関連の WEBページでは、もっぱら「windows コレクション」を「For ~ Next」で回したり、「Windows.Count」で ターゲット を絞り込んでいらっしゃいます。
それはさておき、Internet Explorer さんは、「Windows 95+Internet Explorer 4.0」以降、Windows Explorer さんと『統合』されましたよね。
参考URL)Windows Explorer
http://ja.wikipedia.org/wiki/Windows_Explorer
IE の アドレスバー ではなくて、マイコンピュータ などの エクスプローラ の アドレスバー からでも WEBページ を開くということは、普通に手作業で行えることですので、VBA でもできて当たり前かなぁと考えたのですが、案の定、できました。
・IE が開いていないときは、新しい IE の ウィンドウ を開いて「msn」の ページ を開きます。
・既存の IE の ウィンドウ があるときには、新しい タブ で「msn」の ページ を開きます。
Sub Macro()
Dim objIE As Object
Set objIE = CreateObject("Shell.Application")
With objIE.Windows(0)
.Navigate2 "http://jp.msn.com/", &H800
While .Busy Or .ReadyState <> 4: DoEvents: Wend
End With
End Sub
以上です。
なお、IE8 で [ツール(T)] - [インターネット オプション(O)] - [全般] タブ の [タブ] - [設定(T)] - [タブ ブラウズ の設定] ダイアログ に挙げられた設定項目が、ひょっとしたら微妙に関係あるかもしれませんので...。
No.4
- 回答日時:
を参考にすると出来ませんか。
本件詳しくなくて、IE7ですが。
エクセルVBAの標準モジュールに
上記サイトの例をほとんどコピーですが、一部弄くって
Option Explicit
Sub test01()
Const navOpenInNewTab = &H800
Const navOpenInBackgroundTab = &H1000
Dim objIE
Dim objShell
Dim objWindow
Dim lngCount
'Shell.Applicationオブジェクトの作成
Set objShell = CreateObject("Shell.Application")
'IEウィンドウの個数をカウント
lngCount = 0
For Each objWindow In objShell.Windows
lngCount = lngCount + 1
Next
With objShell.Windows
'IEオブジェクトがないときは、新しく作成する
If lngCount = 0 Then
.Item.Navigate2 "http://www.google.co.jp/"
lngCount = lngCount + 1
'IEオブジェクトがあるときは、タブを操作する(新しいタブを作成)
Else
.Item(lngCount - 1).Navigate2 "http://www.google.co.jp/", navOpenInNewTab
'第2引数を省略したときは、lngCountを減算してください
'lngCount = lngCount - 1
.Item(lngCount - 1).Navigate2 "http://okwave.jp:80/qa5485631.html", navOpenInNewTab
End If
'オブジェクトが確定するまでの空ループ
Do Until Not .Item(lngCount) Is Nothing
'WScript.Sleep 100
Loop
'IEオブジェクトを取得
Set objIE = .Item(lngCount)
End With
MsgBox "ダイアログを閉じた後、5秒後にIE(タブ)を閉じます。"
'WScript.Sleep Sleep 5000
'表示しているページの情報を表示
MsgBox objIE.LocationURL
MsgBox objIE.LocationName
'objIE.Quit
'Set objIE = Nothing
'Set objShell = Nothing
End Sub
何かIEで開いておいて、実行すると、
開いていたもの
Google
本質問
の3つがタブを別にして開くようです。
No.2
- 回答日時:
こんばんは。
こんな風にすれば、取れます。
なお、それぞれのオブジェクトは、事前Binding しておいても良いかと思います。
なお、なぜというのはなしにしてくださいね。
'-------------------------------------------
Sub Test1()
Dim objShellWindows As Object
Dim w As Variant
Dim objIE As Object
Set objShellWindows = CreateObject("Shell.Application").Windows()
For Each w In objShellWindows
If TypeName(w) = "IWebBrowser2" Then
Set objIE = w
Exit For
End If
Next
If Not objIE Is Nothing Then
objIE.Navigate " http://jp.msn.com/"
'操作
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) EXCELのセル相互同期用のVBAでの不具合 3 2022/08/10 11:44
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(プログラミング・Web制作) VBSでExcelファイル起動時、重複しても開くのを止めたい 1 2022/10/01 23:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Safariで、「プライベート」の...
-
新しいタブと新しいウィンドウ...
-
acrobatで、タブに表示されるフ...
-
youtubeのサムネイルを縦4列配...
-
QRコードで複数セルに一括入力...
-
Excel tab入力方法
-
Accessで独自メニューバーまた...
-
firefoxで新しいウィンドウで開...
-
メモ帳のタブ幅を変更する方法
-
VBAで””なしのタブ区切りで出力...
-
Firefoxで設定を「前回のウィン...
-
ブラウザが突然閉じてしまう・...
-
IE7で、現在の画面を新しいタブ...
-
ウェブサイトにアップされてい...
-
今Tridentエンジンのブラウザで...
-
firefoxでタブが別ウインドウに...
-
スペース区切りのテキストを貼...
-
板タブレットで縦に書くと横に...
-
LunaScapeのタブが増殖!?
-
Excel2013で不要なアドインタブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Safariで、「プライベート」の...
-
youtubeのサムネイルを縦4列配...
-
新しいタブと新しいウィンドウ...
-
Excel tab入力方法
-
Firefoxで設定を「前回のウィン...
-
QRコードで複数セルに一括入力...
-
firefoxで新しいタブを今開いて...
-
Firefoxで、メルカリを開くと、...
-
firefoxで新しいウィンドウで開...
-
Accessで独自メニューバーまた...
-
筆ぐるめ、 住所録一覧表が出ない
-
セルの値をグーグルで検索する...
-
Firefox タブを200くらい開いて...
-
Firefoxは、Chrome、Edgeのよう...
-
2つのウィンドウでGoogleChrome...
-
メモ帳のタブ幅を変更する方法
-
Firefox タブが50くらいしか使...
-
accessタブコントロールのタブ...
-
[Ctrl]押しながら[w]でタブが消...
-
ブラウザが突然閉じてしまう・...
おすすめ情報