• 締切済み

VBAでthickboxを自動表示させることって出来ますか?

いまIEのブラウザ自動入力をしようと考えています。 いろいろ調べて、普通の画面なら自動で入力できるのですが、 thickboxが絡んでくるとどうもうまく行きません。 「thickboxを表示させ、ある作業を行い、thickboxを閉じる」 と言う動作がうまく出来ません。 どなたかご指導お願いします。

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

>いつもなら >objIE.Document.forms(0).Item("search[school_name]").Value = "****" >で入力できるのですが、thickboxの場合は違うのですか?  「thickbox」の作りによって何とも申せませんが、 >何とかthickboxを表示させるところまでは出来るようになったので したら、自力でできないこともなさそうです。  私がなぜ、前回答で「初心者向けの冗長な説明」と書いたのかよくお考えいただきたいのですが、ヒントは「ウォッチウィンドウ」です。  実際の「thickbox」を拝見しないと何とも申せませんが、 objIE.Document.forms(0).Item("search[school_name]") の部分を「ウォッチ式の追加」してその左の「+」をクリックなさってみてください。  怪しげなプロパティが並んでいれば幸いですが。。。 #もし、どうしてもお解りにならないようでしたら、お差し支えなければ該当のページの URL と どのリンクをクリックしての「thickbox」なのかお示しいただければ検証ぐらいはしてみましょう。できるかどうかは別問題ですが。。。(なお、登録の必要なページでしたらご勘弁を)

すると、全ての回答が全文表示されます。
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>「objIE.document.Links.Item(80).Click」の >「80」って言う数字はどうしたらわかるのですか? #不要だとは存じますが、初心者向けの冗長な説明をさせていただきますね。 1)先ず、例示したWEBページの猫の絵を右クリック [ショートカットのコピー(T)] して http://project-nya.jp/images/flash/thickbox.sample1.jpg という URL を取得しておきます。 2)VBE で「objIE.document.Links」を選択して右クリック [ウォッチ式の追加(A)] します。 3)「objIE.document.Links.Item(80).Click」の行で [F9] キーを押下し、ブレークポイント を設定します。 4)[F5] キーを押下してマクロを実行すると、(3) の行で停止しますが、このとき、ウォッチウィンドウ に表示された、「objIE.document.Links」の前の「+」をクリックします。 5)「length」が「105」で、「Item」が「1」から「105」まであることは分かります。 6)試しに「Item 1」の前の「+」をクリックしてみます。 7)WebBrowser オブジェクトのプロパティなどを熟知していない場合は、この ウォッチウィンドウ から目的の物を探し出します。  ここでは、URL らしき物を探索してみますと、ざっと見ただけで「host」・「hostname」・「href」・「ie8_href」・「nameProp」の5つが見出されます。  しかも URL らしきものの前に「http」が冠されているのは「href」・「ie8_href」だけです。 8)では、ここでは「href」を使ってみましょう。 objIE.document.Links.Item(80).Click MyClose = objIE.document.Links.Length Beep objIE.document.Links.Item(MyClose - 1).Click の行を削除し、 Dim i As Integer For i = 1 To objIE.document.Links.Length Cells(i, 1).Value = objIE.document.Links.Item(i - 1).href Next に置き換えて実行します。 9)以上で、ワークシートの A1:A105 に例示したWEBページ内のリンク先 URL らしき文字列が並びました。 10)では、ワークシート内で(1)で取得した URL を検索してみましょう。  いかがでしょうか?  A81 セル にありましたね。 11)ということは「i」は「81」になりますから objIE.document.Links.Item(i - 1).href は objIE.document.Links.Item(80).href となります。 12)長々と説明いたしましたが、 objIE.document.Links.Item(80).Click ってことですね。  まぁ、私は余り興味はありませんが、下記などもご参考になるかも知れません。 ●WebBrowser コントロールの概要 http://msdn.microsoft.com/ja-jp/library/w290k23d(VS.80).aspx

add0804
質問者

補足

丁寧な回答ありがとうございます。 最後の質問なのですが、 教えていただいた通りの方法で何とかthickboxを表示させるところまでは出来るようになったのですが、 表示させた後に値を入力させようとすると、通常のWebページのようにはできませんでした。 いつもなら objIE.Document.forms(0).Item("search[school_name]").Value = "****" で入力できるのですが、thickboxの場合は違うのですか? 宜しくお願いします m(._.)m

すると、全ての回答が全文表示されます。
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 一例です。  リンク先ページを開き、猫の絵をクリックして、Beep 音を鳴らしてから「thickbox」を閉じます。 '------------------------------------------------------------------- Sub ThickBox()  Dim objIE As Object, MyClose As Integer  Set objIE = CreateObject("InternetExplorer.Application")  objIE.Visible = True  objIE.Navigate2 ("project-nya.jp/modules/weblog/details.php?blog_id=682#")  While objIE.Busy Or objIE.ReadyState <> 4: DoEvents: Wend  objIE.document.Links.Item(80).Click  MyClose = objIE.document.Links.Length  Beep  objIE.document.Links.Item(MyClose - 1).Click  Set objIE = Nothing End Sub '-------------------------------------------------------------------  元のページで「thickboxを表示させ」る前と後では、 objIE.document.Links.Length が変化するようですね。  上のコードでは、「thickboxを表示させ」る前後で、 objIE.document.Links.Length の値が、それぞれ「105」・「107」でした。  つまり、「thickboxを表示させ、ある作業を行」うには、 objIE.document.Links.Item 106(猫の絵自体) objIE.document.Links.Item 107(close ボタン) を操作すればよい、ということになりますが、これをコードで書く時には、インデックスから1を引いて objIE.document.Links.Item(105) objIE.document.Links.Item(106) となります。  上のコードでは、「thickboxを表示させ」た《後》の ← !!! objIE.document.Links.Length を「MyClose」という変数に格納し、 objIE.document.Links.Item(MyClose - 1) とすることによって、「thickbox」上の [close] ボタンをキャッチしました。  従って、 objIE.document.Links.Item(MyClose - 1).Click で「thickboxを閉じる」ことができました。  閉じる前に Beep 音がなるように書きましたのでご確認を。  「thickbox」上にいくつものボタンなりリンクがある場合は、「MyClose」から引く数を調節することによって、目的のリンク等をキャッチすることができそうです。

add0804
質問者

補足

ありがとうございます。 もう一つ質問ですが、「objIE.document.Links.Item(80).Click」の「80」って言う数字は どうしたらわかるのですか?

すると、全ての回答が全文表示されます。

関連するQ&A