三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

QA20110614 IE操作 Name=が同じデータを(n)で処理とFormsを指定して処理

VBAIE操作で下記の質問がきた。

>yahooブログサイトのTOPページなんですが、
>http://blogs.yahoo.co.jp/
>中央に、”ブログを探そう!”ってグレーアウトっぽい文字がいます。
>ここに、キーワードを入れて、”検索”をクリックしたい(自動でやりたい)と思ってるのですが、
>うまく、キーワードを入れられない。

と質問が来ました。
途中まで作成した、ソースがあると便利なんだけど
(XXXXしたけど できなかった、だと、修正が楽)
頭から、探ってみます。

まず、 http://blogs.yahoo.co.jp/ の 該当箇所のソースを開くと、

<form target="_top" id="navigationSearchForm" name="#" method="get" action="http://search.blogs.yahoo.co.jp/SEARCH/index.html">
<input type="text" style="color: rgb(153, 153, 153);" 
name="p" class="inputText" id="navigationSearchInput" size="27" title="ブログを探そう!"/> 
				<select style="" name="pt" class="form_select"> 
					<option value="c">記事</option> 
					<option value="b">ブログ</option> 
					<option value="i">画像</option> 
				</select><input type="submit" value="検索"/> 
			</form> 

となっているので、
入力フォーム(id="navigationSearchForm")に対して、データを検索窓(name="p")にセット後
送信(.Submit)してみました。

'検索項目(name=q)にセットする。
objIE.Document.Forms("navigationSearchForm").Item("p").Value = "XXXXXXXXXXXXXX"
'フォームを送信
objIE.Document.Forms("navigationSearchForm").Submit '送信処理

下記、テストで使ったソースです。
イロイロといじって、テストしてみてください。

Sub ie_test()  'IEテストする。

'IEの起動
    Dim objIE As Object '変数を定義します。
    Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
    objIE.Visible = True      '可視、Trueで見えるようにします。
    
'処理したいページを表示します。
    objIE.Navigate "http://blogs.yahoo.co.jp/"

'ページの表示完了を待ちます。
    While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        DoEvents  '重いので嫌いな人居るけど。
    Wend
    
    '検索項目(name=q)にセットする。
    'objIE.Document.getElementsByName("p")(2).Value = "三流"
    'objIE.Document.getElementsByName("navigationSearchInput")(0).Value = "AKB48"
    objIE.Document.Forms("navigationSearchForm").Item("p").Value = "AKB48"
    'フォームを送信
    objIE.Document.Forms("navigationSearchForm").Submit  '送信処理
    
End Sub

詳細解説、試行錯誤、実はハマっていた真実の動画

ア.nameのn番目を探して逃げた
.getElementsByName("p")(2).Value = "三流"
と(2)と指定したり、
イ.nameは複数あるので、単一のidで指定したり
.getElementsByName("navigationSearchInput")(0).Value = "AKB48"
↑nameの代わりにidを使ってみた。※関数はgetElementsByNameだけど
ウ.フォームを指定した
'検索項目(name=q)にセットする。
objIE.Document.Forms("navigationSearchForm").Item("p").Value = "XXXXXXXXXXXXXX"
↑最後は素直に フォーム(xxxx).項目名(XXXX).値 = 値 にした。

カッコつけていたけど、実は、いつものようにハマっていたり・・・
(※最近、動画編集が面倒になってきたので、ノーカットでアップした手抜きですが)
↓を見て、笑ってください。

デバック、試行錯誤の動画 http://www.youtube.com/watch?v=_IPI8GWyKzk を見てください
www.youtube.com

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)