![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
vb.netでIEを制御するアプリを作成するために、それに必要な知識をネット上で収集しています。
下記のコードを部分的に借用させて頂こうとしていますが、行番号31のDebug.Printで出力される内容が"http://www.yahoo.co.jp/"ではなく、"about:blank"です。どうしてでしょうか?
1 Public Class Form1
2 Private Const IE_MAX As Integer = 5
3 Private Const NAV_OPEN_IN_NEW_TAB As Integer = &H800
4 Private Const NAV_OPEN_IN_BACKGROUND_TAB As Integer = &H1000
5
6 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
7
8 'IE起動&タブを5つまで開く
9 Dim objShell As Object = CreateObject("Shell.Application")
10 Dim objIE As SHDocVw.InternetExplorer = _
11 CreateObject("InternetExplorer.Application")
12 Dim count As Integer
13 Dim ieList As New List(Of SHDocVw.InternetExplorer)
14 objIE.Visible = True '可視
15 While count < IE_MAX
16 If count = 0 Then
17 objIE.Navigate("about:blank")
18 Else
19 objIE.Navigate("about:blank", NAV_OPEN_IN_BACKGROUND_TAB)
20 End If
21 System.Threading.Thread.Sleep(1000) 'ある程度の時間Sleepしないと、異なるタブで開けない
22 ieList.Add(objShell.Windows.Item(objShell.Windows.Count - 1))
23 count += 1
24 End While
25 Application.DoEvents()
26
27 'タブ1と2でサイトを表示
28 ieList.Item(0).Navigate("http://www.google.co.jp/")
29 ieList.Item(1).Navigate("http://www.yahoo.co.jp/")
30
31 Debug.Print(ieList.Item(1).document.URL)
32
33 End Sub
34 End Class
環境は、Windows 7、VB 2010 Expressです。
ご教示の程、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
Navigate メソッドで呼び出したページの読み込みが完了する前に
内容を取得しようとしているからです。(Navigate メソッドは
ページの取得要求を出したら、ページが実際に取得されるのを待た
ずに即処理が返ってくる仕様です)
よって『ページが取得されるのを待つ処理』を、きちんと自分で
実装しないとうまく動きません。SHDocVw.InternetExplorer の
ReadyState プロパティについて調べてみてください。
※ なお、VB.NET での IE 利用であれば、SHDocVw ではなく
WebBrowser クラスのほうが使いやすいですよ。
インデントのない読みにくいソースコードすみませんでした。
お教え頂きましたように『ページが取得されるのを待つ処理』を追加したところ、期待する結果を得ることができました。
早速の回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
JSPで<SELECT>の中にDBから持っ...
-
C++/CLIにてForm1の要素に外部から
-
Application.Wait の参照設定
-
final修飾子を使っているのに、...
-
C# 演算 最大値 最小値 表現の仕方
-
mainメソッドのthrows節で設定...
-
C#で右からnカラム目に文字を挿...
-
エクセルVBAにおけるON TIMEメ...
-
アクセスVBA 時間を止める
-
【sendkeysメソッドが動かずに...
-
DataGridViewでセルクリックイ...
-
コンパイルエラーの理由。
-
ウィンドウを最前面にできません
-
onClickで関数呼出し後に、結果...
-
処理内容がほぼ同じメソッドの...
-
VBPをダブルクリックするとたま...
-
HyperLinkのNavigateUrl属性に...
-
javaの中でaddElementは何ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Refreshメソッドの使い方
-
エクセルVBAにおけるON TIMEメ...
-
boolean型のフィールドとゲッタ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
配列のメソッド
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
worksheets & rows メソッドは...
-
Application.Wait の参照設定
-
(String args[])というメッソ...
おすすめ情報