蛇足の蛇足(価格でソート)を追加してみた。
キッカケは質問者の過去の質問履歴を見ると、
http://q.hatena.ne.jp/1256760404 で
>あと、常に検索は「価格順」にしたいのですが出来れば教えて下さい。
を見つけたので、余計なお世話、蛇足のコードを日記に書いてみたいと思います。
と言っても、
http://q.hatena.ne.jp/1256930412#a963060 の回答に 価格のソート指定を肉付け(数行)しただけです。
試行錯誤のテスト動画
VBA IE操作 SELECTタグの一番上を選択する .SelectedIndex = 0
www.youtube.com
http://www.youtube.com/watch?v=5E-Cc9L680Q
本当は価格の文字を探した方がイインですが、
今回は手抜きで、
SELECTタグのオブジェクト.SelectedIndex = 0
みたいな感じで、
.SelectedIndexを使い、直接0番目(一番上を選択してみました。)
、
objIE.Document.all("primarySortType").SelectedIndex = 0 '価格は上から1番目なのでSelectedIndexに0をセットする
手前味噌の参考場所は http://ken3-info.blog.ocn.ne.jp/objie/2009/07/ie_select_optio.html (三流君より IE操作 SELECT OPTION の 選択イロイロ )です。合わせて見てください。
VBAのソース
Book1108.xls
↑裸のxlsブックです(Excel2003 IE8 XPでテスト)クリック後保存してから使ってみてください。
下記、修正したVBAのソースです。
シートに貼り付けたコードで、A列とD列のダブルクリックに反応させてます。
マクロの貼り付け手順:シートのイベントにコードを書きたいので、
シートの名前の上にカーソルを
合わせてから右クリック、
コードの表示を選択する
Option Explicit 'ダブルクリックのイベント Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = 1 Or Target.Column = 4 Then 'A列か(or)D列の場合処理する。 11/08 D列(.Column=4)を追加 Call ie_test(Target.Value) 'クリックされた場所の値をIEに渡す。 Cells(Target.Row, 6).Select 'F列の選択 End If End Sub '本のタイトルを上位関数から受け取り、 'IEを起動して(起動済みを探し)、 '書名にセット 'ソート を 価格順 にする(11/08追加) Private Sub ie_test(bookname As String) '起動済みのIEを探す Dim objShell As Object 'Shell.ApplicationのWindowから探したいので Dim objIE As Object 'IEを入れる箱(捕まえてコントロールしたい) Dim n As Integer 'カウンターです。 'これで、エクスプローラーのウインドウを取得する Set objShell = CreateObject("Shell.Application") Set objIE = Nothing '初期化する(フラグ代わりも兼ねて、後でIs Nothingでチェックしたいので) '後ろから探す(素直に前から探してよ(笑)) '.Windowsでエクスプローラーとインターネットエクスプローラー(FullNameがIEXPLORE.EXE)にさわれる For n = objShell.Windows.Count To 1 Step -1 'MAXから-1ひいてく感じ '.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する If Right(UCase(objShell.Windows(n - 1).FullName), 12) = "IEXPLORE.EXE" Then Set objIE = objShell.Windows(n - 1) 'n番目のウインドウ(FullNameがIEXPLORE.EXE)を代入 Exit For '見つけたので、↑代入後、強制的にループを抜ける End If Next Set objShell = Nothing 'もし起動済みのIEが見つからなければ、新たに起動する If objIE Is Nothing Then '上で見つけられたか? Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 End If objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://www.kosho.or.jp/public/book/detailsearch.do" '.Navigate メソッドで表示する。 '↑上記のページの表示が完了するまで待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents '重いので嫌いな人居るけど。 Wend 'ページが表示されたので、表示された文章に対して、処理を行います。 objIE.Document.all("p_shomei").Value = bookname '関数頭で受け取った値(書名)をp_shomeiにセットする。 '並べ替えの順番を追加 2009/11/08 objIE.Document.all("primarySortType").SelectedIndex = 0 '価格は上から1番目なのでSelectedIndexに0をセットする '検索開始を押す 'リンクのアンカーオブジェクトをクリックする Dim objFDOC As Object 'ドキュメントを保存する Set objFDOC = objIE.Document '代入別に代入しなくてもいいけど。 'リンク情報からオブジェクトを探し.Clickする For n = 0 To objFDOC.Links.Length - 1 'リンク数分まわす Debug.Print objFDOC.Links(n).href 'デバックで表示する 'リンク先のAタグの中(.InnerHTML)をチェックする(検索開始を探す) If InStr(objFDOC.Links(n).innerHTML, "検索開始") > 0 Then objFDOC.Links(n).Click '.Clickでクリックしてみた Exit For '見つかったので強制的にループを抜ける End If Next n 'データセット後にIEを前面にする方法がわからなかったので、とりあえず、Excelを最小化してごまかす Application.WindowState = xlMinimized 'excelの最小化 End Sub
ついでに、
http://q.hatena.ne.jp/1256929671#c163269 のコメントランで、D列の指定をしたい感じの流れなので、
If Target.Column = 1 Or Target.Column = 4 Then 'A列か(or)D列の場合処理する。 11/08 D列(.Column=4)を追加
と、蛇足の蛇足で追加してみた・・・(本当は、私のソースじゃなくて、貼り付けの質問のママで、勘違いしてるパターンもあるけど、、、)
手前味噌の宣伝
三流君objIE解説 http://ken3-info.blog.ocn.ne.jp/objie/archives.htmlや
IE操作 http://d.hatena.ne.jp/ken3memo/searchdiary?word=%2a%5bIE%c1%e0%ba%ee%5d
に
IE操作のサンプルを少々置いてます、暇な時間があったら、のぞきに来てください。
プログラムと本当に関係ない その他広告
【BACK NUMBER】プリントヘンリー 11月8日 最近販売DISNEY・BABY ベビーミッキー ベ 11月7日 伸び率UP
NISSEI 手首式デジタル血圧計 WS- 11月8日 伸び率UP
大人の科学マガジン Vol.25(二眼レフ 現在人気の 大人の科学マガジン Vol.25(二眼レフカメラ) (Gakken Mook) など 本・書籍を紹介する(
HIROMI GO CONCERT TOU 11月8日 伸び率UP
Amazonベーシック 8.5GB 8倍速 11月8日 最近販売
くらこん 無添加・減塩佃煮セット → 11月7日 最近販売
邪悪宣言 装甲悪鬼村正 オリジナルサウンド 11月8日 伸び率UP
ToHeart2 向坂環 (1/6スケール 11月8日 最近販売
K18 ムーンストーン エンジェルペンダン 11月8日 最近販売
HITACHI クリエア 加湿空気清浄機 11月8日 伸び率UP
劇場アニメ「テイルズ・オブ・ヴェスペリア~ 11月8日 伸び率UP
north peak(ノースピーク) ヒッ 11月8日 最近販売
【Breo/ブレオウォッチ】★イギリス直輸 11月8日 最近販売