三流君 ken3のmemo置き場

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

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

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

回答下書きの蛇足(価格でソート) VBA IE操作 Selectタグの選択 .SelectedIndex

蛇足の蛇足(価格でソート)を追加してみた。
キッカケは質問者の過去の質問履歴を見ると、
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)を追加
と、蛇足の蛇足で追加してみた・・・(本当は、私のソースじゃなくて、貼り付けの質問のママで、勘違いしてるパターンもあるけど、、、)

ExcelIE(Web)の連携処理の参考となれば、、、

手前味噌の宣伝

三流君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日 最近販売

Ken3 ホームページ 目次

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

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



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