IEで文字の色が取得できるのか?

このQ&Aのポイント
  • IEでクリックしてアドレスにジャンプする文字の色をプログラム(VBA)で知りたい。
  • ウェブブラウザコンポーネント(WebBrowser)を使って、VBAでホームページの文字を取得する方法を紹介。
  • アンカーエレメントに ForeColor みたいなプロパティは存在しないのか?
回答を見る
  • ベストアンサー

IEで文字の色が取得したい

IEでクリックしてアドレスにジャンプする文字は、 一般的に、未読は青、既読は紫となっていますが、 プログラム(VBA)でその色を知りたいのです。 ウェブブラウザコンポーネント(WebBrowser)を使い VBAで以下のコーディングをすれば、 ホームページの文字を取得することができます。 知りたいのは文字でなく文字の色なのです。 また、スタイルと言うプロパティで色の設定はできますが、 取得ができません。 特に色でなくても既読か、未読かが分かればかまいません。 アンカーエレメントに ForeColor みたいなプロパティは ないのでしょうか?  以上、よろしくお願いします。 For iix = 0 To pDisp.Document.All.length - 1 Debug.Print pDisp.Document.All.Item(iix).innerText Next

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

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

#1,#2だ。 すんなりいく方法があるかどうかわからんけれども。 訪問済みってURLで判断しているよね、多分。 ってことで FindFirstUrlCacheEntry API FindNextUrlCacheEntry API FindCloseUrlCache APIを使った ここのGetCacheURLList関数をパクる (このコードではFormモジュールでList1.Addしているが,Publicにして標準モジュール持ってって適当に改造。) http://vbnet.mvps.org/index.html?code/internet/findfirstcacheentry.htm #ただ、手元でVBAで実験してみたら,ItemDataとかがないとか言われてエラーが出た。 Formの方では Dim hoge As Object Dim MyURL As String Dim i As Integer Dim j As Integer GetCacheURLList (&H200000) WebBrowser1.Navigate "http://www.yahoo.co.jp" Do While Not (WebBrowser1.ReadyState = READYSTATE_COMPLETE) DoEvents Loop hoge = WebBrowser1.Document.getElementsByTagName("a") For i = 0 To hoge.Length - 1 MyURL = hoge.Item(i).getAttribute("href", 2) For j = 0 To List1.ListCount - 1 If "Visited: Administrator@" & MyURL = List1.List(j) Then MsgBox ("発見" & vbCrLf & _ "Visited: Administrator@" & MyURL & vbCrLf & _ List1.List(j)) '実際にはAdministratorじゃなくてユーザー名が入る。別途調べて欲しい。 End If Next j Next i ・・・・ってな感じで地道にループ回して調べるとか(笑)

VT250F
質問者

お礼

DOM と言うキーワードと, queryURL 等で検索し、 JavaScript を用いると出来るそうなので、 アプローチを変えてみます。 いろいろありがとうございました。

その他の回答 (2)

回答No.2

すまん、質問の意図を勘違いしていた。 撤回する

回答No.1

簡易な方法があるのかどうかは知らない いっそのことレジストリから値を取ってっちゃうのは? http://msdn2.microsoft.com/en-us/library/aa741310.aspx

VT250F
質問者

補足

英文の資料を読んでみましたが、 ハイパーリンクのデフォルトカラーが取得できるようです。 レジストリでは設定がわかるだけで、 現在のリンクが、青になっているか、紫になってるかは、 識別できないようです。 デフォルトカラーなら pDisp.Document.All.Item(iix) の 上のレベル pDisp.Document あたりでわかるのですが、 既読か未読かの色設定がわかるのであって、 現在のリンクが、既読か未読かどちらの状態にあるかは、 わからないのです。

関連するQ&A

  • WebBrowserに表示されているページのソースの取得方法

    RichTextBox1.Text =WebBrowser1.Document.body.innertext とすれば表示されている文字は取得できるのですがタグ付きのソースは 取得できません。 webBrowserコントロールに表示されている文字だけでなくタグもいっしょに 取得するにはどうすればよいのでしょうか

  • C# htmlの一部の文字取得

    C#のwebBrowserで表示されているtextを表示させたいです。 htmlが <div class="AAA"> BBB </div> となっており、BBBのtextを取得したい場合、 HtmlElementCollection elem = webBrowser0.Document.GetElementsByTagName("div");   foreach (HtmlElement element in elem)   {    if (element.GetAttribute("class") == "AAA")  {  str = element.InnerText;  } } と、しましたが、上手く取得出来ません。 ご教授頂ければ助かります。

  • VB2005のWebbrowserでSubmit

    VB初心者です。 Webbrowserで、Submitを押して自動ログインしたいと思います。 ネットで色々調べてみると、 WebBrowser1.Document.All.GetElementsByName(TextBox2.Text)(0).InnerText = TextBox4.Text WebBrowser1.Document.All.GetElementsByName(TextBox3.Text)(0).InnerText = TextBox5.Text WebBrowser1.Document.Forms(0).InvokeMember("submit") で、実行可能というのがありました。 IDとパスワードの入力はできたのですが。(フォーム上で、TextBoxで入力しての話)Submitが実行されません。 ローカルウィンドーで見ても、よく判らないのですが、何をどのように調べれば、実行可能であるか?どうか?判るのでしょうか? どなたか?詳しい方宜しくお願いします。

  • 【C#】WebBrowser上で表示されているテキストの部分取得

    こんにちは,いつもお世話になっています. C#を用いて,ローカルに保存したhtmlファイルをwebBrowserで表示し, そこに表示されたテキストの一部をマウスで選択してボタンアクションで取得するような機能を実現したいと考えています. 現在WebBrowser.Document.Body.InnerText.Substring(int, int)を使用して選択された文字列を取得しようと考えているのですが, ブラウザで表示されているテキストにはtextBoxでいうところのselectionStartsやselectionLengthのようなプロパティがありません. どのようにしたら可能になるでしょうか. もちろん目的の機能が実現できるならば上記の方法にこだわるつもりはありません. 他に何か方法がありそうでしたらそちらも教えていただけないでしょうか. プログラミング初心者ですので質問の仕方に至らない部分があるとは思いますが, どうぞよろしくお願いいたします.

  • WebBrowser内の特定の文字列が入ったリンクをクリックしたい

    いつもお世話になっております!! VB2005ユーザーです。 WebBrowser内の特定の文字列が入ったリンクをクリックしたいのですが、どのようにすればよいのでしょうか? WebBrowser.Document.Body.InnerText内の <a href="http://mtblog.ne.jp/next/">続きはこちら</a> 「続きはこちら」といった文字列が入ったリンクをクリックしたいのですが・・・。 稚拙な質問で申し訳ありません。

  • webbrowserについてボタンが見つからない

    現在 https://secure.avaonline.jp/member/ の自動ログインツールを作っているのですが、 WebBrowser1.Document.All.GetElementsByName("accountid")(0).InnerText = TextBox1.Text WebBrowser1.Document.All.GetElementsByName("passwd")(0).InnerText = TextBox2.Text によって、IDとPWの入力はできたのですが、ログインボタンと、ゲームスタートの ボタンどうしても見つかりません。 WebBrowser1.Document.All.GetElementsByName("ボタン名")(0).InvokeMember("submit") となど試してはみたのですが、 0' の値は 'index' に対して有効ではありません。'index' は 0 と -1 の間でなければなりません。 パラメータ名: index とエラーが出てしまいます。 上記のサイトはjavascriptなど使っていて見つけられなかったので、 具体的なボタンの名前やどのように記述していいの教えてください。 よろしくお願いします

  • 最後まで読み込ませて待たせるには?

    わからないので質問させてください。 初心者なのでなかなかうまくいきません。(?_?) 教えていただけないでしょうか。 よろしくお願いいたします。 OS VISTA ブラウザ IE7 Microsoft Visual Basic 2005 WindowsFormのWebBrowserを使って表示させています。 やりたいこと WebBrowser1.Navigate(ComboBox1.Text)が読み込むまで待たせたい。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click WebBrowser1.Navigate(ComboBox1.Text) WebBrowser1.Document.All.GetElementsByName("タイトル")(0).InnerText = TextBox2.Text WebBrowser1.Document.All.GetElementsByName("内容")(0).InnerText = RichTextBox1.Text End Sub

  • WebBrowserでgoogle検索するには?

    WebBrowserを使ってgoogle検索をVBで作ったブラウザ上で行いたいです。 具体的には、 「ComboBoxで選択した値」と「TextBoxで書き込んだキーワード」を &検索したいのですが Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = TextBox1.Text WebBrowser1.Document.All.GetElementsByName("q")(0).InnerText = ComboBox1.SelectedItem WebBrowser1.Document.Forms(0).InvokeMember("submit") End Sub では、&検索ができません。常にコンボボックスで選択されたものだけが 検索され、しかも無限に検索をします。 対処法を教えていただけないでしょうか?

  • VB2005でWebBrowserでログイン

    今まで、ExcelのVBAを手探り状態で使い、IEを操作していたものです宜しくお願い致します。今回、VB2005EEをインストールしたので、Excelで行っていた作業を移行させようと思ってネットでサンプルを手にいれ使おうかと考え行き詰りました。どなたか教えてください。 formにWebBrowserコントロールを貼り付けてネットのログイン画面を With WebBrowser1 .Navigate("http://xxxx.xxx.co.jp/xxx/mail?roginname=abcd123") .Document.All.GetElementsByName("acctname")(0).InnerText = "abcd123" .Document.All.GetElementsByName("passwd")(0).InnerText = "1234567" .Document.Forms(0).InvokeMember("submit") End With としたところ、.Documentの行で、オブジェクト参照がオブジェクト インスタンスに設定されていません。のエラーが出てしまいます。 ヒントには、オブジェクトインスタンスの作成には、newキーワードを使用します。と、メソッドを呼び出す前に、オブジェクトがnullでよいかどうか確認してくださいとあます。 私は、いったいどうすればいいのでしょうか?基本的な部分が分かっていないだけだと思いますが、教えて頂けないでしょうか?

  • 続:IEの操作で新ページのソース取得方法は?

    「VBによりIEでページを表示させ、そのページから新しいページに移動させたとき、その新ページのHTMLのDocument取得方法をご教示頂きたくお願いします。」と先に質問し下記の回答を頂きました。   HTMLタグ付きなら   WebBrowser1.Document.body.innerHTML   だったと思います。 最初に表示させたページの制御には、次のようにしました。   objIE.Document.All("ACCOUNT").Value = "xxxx"   objIE.Document.All("PASSwd").Value = "yyyy"   objIE.Document.All("btn").Click 新しいページに対しても最初のページと同じようにして制御出来るようにするにはどうすればよろしいのでしょうか? 初心者で、最初の質問は中途半端でした。よろしくお願いします。

専門家に質問してみよう