• ベストアンサー

VBでブラウザの状況が知りたいのですが…

VBでブラウザがページを読み込んでいる時の情報を得ることが出来ますか? 「ページを読み込み始めた」とか 「ページを読み込んでいる途中である」とか 「ページの読込みが完了した」という情報を得たいのです。 (フレーム分割した場合も適応できるのなら文句なしです) あと、ACCESSのVBAでも可能であるか教えてください。 環境はWin98、ACCESS2000です。 宜しくお願いしますm(_ _)m

  • a68
  • お礼率58% (64/109)

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

  • ベストアンサー
  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.3

遅くなりました。これで試してください。 Option Explicit Private WithEvents gIE As SHDocVw.InternetExplorer Private Sub Command1_Click() '「ナビゲート開始」ボタン押下イベント Dim dUrl As String dUrl = "http://www.yahoo.co.jp/" 'ナビゲートURL 'VBによってIEが開かれているかどうかの判定 If gIE Is Nothing Then Set gIE = New SHDocVw.InternetExplorer '開かれていないとき、新規に開く End If gIE.Navigate dUrl 'URL設定 gIE.Visible = True 'ブラウザ表示 End Sub Private Sub Form_Load() 'フォーム初期設定 With Me .List1.Clear .Command1.Caption = "ナビゲート開始" End With End Sub Private Sub gIE_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'ナビゲート開始イベント Me.List1.AddItem "ナビゲート開始" End Sub Private Sub gIE_NavigateComplete2(ByVal pDisp As Object, URL As Variant) 'ナビゲート完了イベント Me.List1.AddItem "ナビゲート完了" End Sub Private Sub gIE_OnQuit() 'ブラウザをユーザが閉じたときにオブジェクト解放 Set gIE = Nothing End Sub 瞬時に開始-完了となってしまうので、テキストボックスではなくリストボックスにしてみました。 あと、回答するとネストのスペースとタブが無くなってしまうんですね・・・。 見づらいかもしれませんが、お許しください。

a68
質問者

補足

mld_sakuraさん 回答ありがとうございますm(_ _)m 遅くなってすいませんでした。 部分的に変更してACCESSのVBAで動作することを確認しました。 あとは自分なりに使いこなしていこうと思います。 何度も申し訳ないのですが ページのソースを取得したいのですが可能ですか? Inet.OpenURL(http://~)でVBは出来るみたいなのですが VBAではMicroSoft Internet transfer controlがないため出来ません。 申し訳ありませんが宜しくお願いしますm(_ _)m

その他の回答 (3)

  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.4

ページの取得は「all」コレクションを使用します。 Dim lp as Integer For lp = 0 To WebBrowser.Document.All.length - 1 List1.AddItem WebBrowser.Document.All(lp).tagName List1.AddItem WebBrowser.Document.All(lp).outerHTML Next サンプルは、1行ずつのタグ情報すべてをリストボックスにアペンドしてます。 上記の例でOKだと思いますが、VBAについてはどうだか分りません。 (すみません、VBAのスキルが無いもんで・・・)

a68
質問者

お礼

mld_sakuraさん 回答ありがとうございますm(_ _)m サンプルのほう試してみましたがダメでした。 そのまま使ってダメだったのでWebBrowserをgIEにしてみたのですが こちらもうまくいきませんでした。 もう少し勉強することにします。 何度も回答していだたきありがとうございましたm(_ _)m また困った時には宜しくお願いしますm(_ _)m

  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.2

了解です!! (前提条件)「Microsoft Internet Controls」コンポーネントを追加する。 Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) 'ナビゲートを開始したときに発生するイベント End Sub Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant) 'ナビゲートが完了したときに発生するイベント End Sub これでフラグにて制御すれば判定できると思います。 例えば、開始してなおかつ完了してないときのフラグの状態があれば、ナビゲート中を判定可能だと思います。 このコントロールには色んなプロパティ(ヒストリバックの制御とか)があるので試して見て下さい。 簡単ですよ。 PS. すっかりVBから離れてしまって(今はJava)説明が下手かもしれません。 分らなければまた質問してください。

a68
質問者

補足

mld_sakuraさん 回答有難うございますm(_ _)m 説明してもらったのですが、よくわかりませんでした ゴメンナサイ、無知で…σ(^_^; もしよろしければサンプルソースをお願いしたいのですが…ダメですか? フォームに「テキストボックス」と「開始ボタン」「終了ボタン」があって 「開始ボタン」を押したらブラウザのチェックを開始して もしナビゲートを開始したらテキストボックスに「ナビゲート開始」と表示し、 ナビゲートが完了したら「ナビゲート完了」と表示して 「終了ボタン」を押したらブラウザのチェックが終了するもの 大変申し訳ないのですが宜しくお願いしますm(_ _)m

  • mld_sakura
  • ベストアンサー率20% (264/1282)
回答No.1

ナビゲート開始と終了は確実にイベントを拾えます。 ただしナビゲート中については、ナビゲート開始かどうかをチェックし、終了されていないで判断出来ると思います。 また、ブラウザに対して引数を与えて起動することも可能です。 これには以下のライブラリを使用します。 ・Microsoft InternetControls ・Microsoft HTML ObjectLibrary あと、表示中のURLを取得したり、ブラウザバックなども可能です。 VBAについてはVBA自体がよく私は分りませんので、はっきり言えません。 ごめんなさい。

a68
質問者

補足

mld_sakuraさん 回答有難うございますm(_ _)m >VBAについてはVBA自体がよく私は分りませんので、はっきり言えません。 >ごめんなさい。 いえいえ。これだけ教えてもらえてとても満足しています(^^) Microsoft InternetControls がVBAでも使えますのでいけそうです。 実はVB持っていないので無理かなーと思っていました。 もしよろしければ使い方を教えて欲しいのですが… 再度宜しくお願いしますm(_ _)m

関連するQ&A

  • ACCESSでVBを使用する方法が知りたいです。

    ACCESSでVBを使用する方法が知りたいです。 よろしくお願いします。 ACCESS2007or2010でVisual Basicを関連付けて操作する方法が知りたいです。 書籍、HPなんでも構いませんので情報ください。 VBAではなくvisual basicの方です。 access,VBどちらも単体では簡単な操作はできるのですが、 VBで作ったブログラムをACCESSで動かすことなどさっぱりわかりません。 マイクロソフトの.NET用のページは見ましたが参考にできませんでした。 どなたかよろしくお願いします。

  • VBでブラウザを操作するには?

    ■利用環境 WinXP SP3 VB2008 ExpressEdition IE7 ■質問 VB始めたばかりで初心者です。 VBSで行っていたIEオブジェクトの自動操作をVBのフォーム デザインを使ってビジュアル的に作り変えたいのですが MSDNもろくに読めなくて前に進めません。 VBは、イベント駆動と言うのは、理解しているつもりですが、 CreateObject("InternetExplorer.Application") とブラウザコントロールの違いに戸惑っています。 IEオブジェクトとWebBrowserオブジェクトの使い方の違いの事です。 VBSのIEオブジェクトで行っていた操作は、 IE = CREATEOLEOBJ("InternetExplorer.Application") IE.visible = True IE.navigate(URL) IE.document.body.InnerHTML と言う操作をしたいのですが、 できれば、このように私が慣れているIEオブジェクトの操作で ページ表示だけ、VBのブラウザオブジェクトに反映させる事が できれば良いのですが、難しければ、 VBのコントロールのブラウザオブジェクトで これと同じ操作をするにはどうすればよいか 教えて頂けませんでしょうか?

  • VB2008での二重ループをVBAで作りたいのですが

    VB2008での二重ループをVBAで作りたいのですが Access2007ではじめてVBAに挑戦したいのですが、 今回は二重ループをVBAで作りたいです。 何か参考になるページを教えていただけませんでしょうか。 よろしくお願いたします。

  • ACCESSのVBAで出来ますか?

    VisualBasicであれば Inet.OpenURL(http://~)を利用して ページのソースを取得できるみたいですが、 ACCESSのVBAでもInetは使用できるのでしょうか。 VBではコンポーネントのMicroSoft Internet transfer controlを追加するみたいなのですが ACCESSのVBAでは見つかりませんでした。 また、違う方法でページのソースを取得することは可能ですが。 環境はWin98、ACCESS2000です。 宜しくお願いします。

  • AccessからVBに移行してみたいのですが

    数年前にAccessを利用して便利ソフト的な物を作りました。 当時も今もプログラムなどに関しては素人なのですが、参考書等でVBAを勉強しつつ、データベースを管理するソフト(?)を一応は作ることができました。 先日友人から「そのソフト便利だから家で使ってみたい」と言われ、その友人がAccess環境のあるPCを使っていないこともあり、せっかくなので手元にあるVB6.0で作り直してみたらどうなのか、と考えています。 しかし何を用意したらいいのか、実際にできるのか、皆目見当もつかない始末・・・どうかこのズブの素人にお教えください。 私が作ったのは、フォームにコントロールだけ配置し、動作などはVBAで書き、VBA内でSQL文を書いてテーブルから必要な情報を検索・登録等をしています。 (1)VB6.0で作り直したら、他のPCで使えるようにしたいという思惑は果たせるのでしょうか? (2)VB6.0で無理となると、何か良い方法はないでしょうか? (3)もしVBで可能とすると、VB6.0以外に用意すべき物、事はあるでしょうか? (4)BV6.0でそれなりのフォームを作ったとしても、今あるAccessのデータベースを直接使ったりできるのか…何よりデータベースへの接続は何を介するのか? 質問内容自体がもしかしたら見当外れかもしれません…その辺の判断もつかない程なのです。 家庭内で軽く使う程度のものなのでガチガチな環境を作ったりお金をかけたりはできないので、それを前提として教えて頂けると非常に助かります。よろしくお願いします。

  • SQLのデータを分割してブラウザに表示

    環境は MYSQL PHP 4.1.3 WIN2000 よく掲示板等のHPで分割して表示しているのをよく見かけます。 ”次の5件表示”とかのやつです。 あれはどういうロジックになっているのでしょうか? 例えば今DBに30件の顧客データがあるのですが、 ブラウザで1ページに10件表示するとして3ページにわたる場合どう作成すればいいのか教えて頂けないでしょうか?

    • ベストアンサー
    • PHP
  • VB6とVBAのマクロのアクセス方法を教えてください。

    VB6とVBAのマクロのアクセス方法を教えてください。 用途は、 (1)VB6からVBAマクロを起動する。 (2)VBAマクロの途中経過をVB6のオブジェクトへ通知する。 VBAはPC外部接続機器をコントロールします。 VB6での実装サンプルが用意されていない為、VBAを使用しております。) (3)VB6は通知結果を、拾って別ルーチンの処理を実行する。 (1)では、下記の様な方法にてマクロ実行を考えていたのですが、 マクロが終了するまで、次コードへ移らない為、 シェル関数の様な形でマクロをキックしたい。 xlApp.run ("VBA_TEST(" & Chr(&H22) & strarg & Chr(&H22) & " )") (2)では、VBAとVB6と平行に実行したい為、フラグをやり取りするのに、 VB6のオブジェクトを使用したい。

  • ChromeブラウザでWebページの読み込みに失敗

    よろしくお願いします。 Chromeブラウザをデフォルトブラウザとして使っているのですが、 ブックマークしているWebページを開こうとすると、 どのWebページを開こうとしても、最初に 「このサイトにアクセスできません  xxxx のサーバーの IP アドレスが見つかりませんでした。」 という読み込み失敗の画面が表示されます。 再読み込みをすれば開けるのですが、とても面倒で困っています。 同じページをEdgeブラウザで開くとすぐに開きます。 同じ現象になったことがある方、原因が思いつく方、 お手数ですが回答いただけるとありがたいです。 環境は PC:Win11 Chromeのバージョン:バージョン: 107.0.5304.121(Official Build) (64 ビット) いつから発生していたか覚えていませんが、ここ三か月以内だと思います。 他、必要な情報があれば教えてください。 よろしくお願いいたします。

  • VB.NET ADO.NETのサンプルについて

    開発環境  Win XP pro  VB.NET  SQL Server 2000 VB.NET ADO.NETのサンプルを探しているのですが まだまだ情報が少なくて見つかりません。 私の探し方が悪いのかもしれませんが、、、 言語の勉強をする際に一番の近道はサンプルを 活用する事だと思います。 サンプル集を集めたWEBページまたは書籍を知っている方 いましたら教えてください。 宜しくお願いします。

  • VB6のプログラムをWIN7で使いたい

    OSをXpからWIN7に移行しなければならなくなり、環境移行のテストをしています。 VB6で組まれた業務用プログラムがあり、現在Xpで動作しています。 このプログラム自体はWIN97の時代に作成されたものです。 簡単に説明しますと、データがAccessのデータベースにあり、それを使って技術計算をするプログラムです。 WIN97に入れると、セットアップは成功するのですが、Accessとデータをやり取りする部分でエラーが起きているようです。 そもそも、VB6自体がWIN7にはセットアップできないようで、再コンパイルできません(再コンパイルで動くかどうかも不明ですが)。 WIN7上で動かす良い方法がないでしょうか。

専門家に質問してみよう