三流君 ken3のmemo置き場

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

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

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

VBAサンプル097が間違っています。。。

動作しないとメッセージをいただく

http://www.ken3.org/vba/backno/vba097.html
>webに掲載されていましたwebの自動ログインのソースをそのままコピーして
>実行してみました。そしうしましたところ、IEが立ち上がり、
>"けんぞうのめんてこな世界"が表示され、
>IDおよびパスワードの蘭にデータが自動で入力されず、
>下記のメッセージが現れました。何が原因でしょうか?
>

オートメーションエラーです。エラーを特定出来ません。

http://www.ken3.org/vba/backno/vba097.html

ie.Document.documentElement.innerHTMLがエラーになります。 >エクセルのバージョンは2000です。バージョンが古いのでしょうか?

原因は表示待ち?かなぁ。

こんにちは。
自分のテストページで こけているので 恥ずかしいのですが、
表示待ちができていないと思います
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
こんな感じでエラーが発生していると思います。
http://www.youtube.com/watch?v=mTZOKAXSzBM

Sub ie_test()

    Dim objIE    As Object  'IEオブジェクト参照用

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)

    '文字列で指定したURLに飛ぶ
    objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"

    '表示終了まで待つ ※表示待ちができていない。
     Do While objIE.Busy = True
         '何もしないループ(笑)
         DoEvents
     Loop

     '項目名を指定して、データをセットする
     objIE.document.all.userid.Value = "Ken3" 'ユーザー名
     objIE.document.all.pass.Value = "aaa"    'パスワード

End Sub

ここ

    '表示終了まで待つ ※表示待ちができていない。
     Do While objIE.Busy = True
         '何もしないループ(笑)
         DoEvents
     Loop

で、表示待ちができていないので、

.ReadyState プロパティ http://ken3-info.blog.ocn.ne.jp/objie/2009/06/readystate_1393.html
を追加で見る(条件に入れる)といいみたいです。

    While objIE.ReadyState <> 4 'READYSTATE_COMPLETE = 4
        DoEvents     'Doeventsは重いので嫌いな人居るけど
    Wend

みたいな感じで、追加してみます(Orで条件を見てみます)

Sub ie_test()

    Dim objIE    As Object  'IEオブジェクト参照用

    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    
    objIE.Visible = True '見えるようにする(お約束)

    '文字列で指定したURLに飛ぶ
    objIE.Navigate "http://www.ken3.org/cgi-bin/test/test068.html"

    '表示終了まで待つ ※表示待ち .Busyか.ReadyStateが4以外
     Do While objIE.Busy = True Or objIE.ReadyState <> 4 'READYSTATE_COMPLETE = 4
         '何もしないループ(笑)
         DoEvents
     Loop

     '項目名を指定して、データをセットする
     objIE.document.all.userid.Value = "Ken3" 'ユーザー名
     objIE.document.all.pass.Value = "aaa"    'パスワード

End Sub

変なサンプルでご迷惑をおかけしてスミマセン。
無事に動くことを願いつつ、失礼します。 三流プログラマー Ken3

Ken3 ホームページ 目次

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

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



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