三流君 ken3のmemo置き場

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

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

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

getElementsByName が 正解で getElementByName が不正解?

VBAからIEを操作するときに、
getElementByName だと、通らなくて、
getElementsByName だと、OK、そんな不思議な話があるみたいです。

みなさんも、実際にテストしてみてください。

↓OKパターン(動きます)

Option Explicit

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

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

'ページの表示完了を待ちます。
    While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        DoEvents  '重いので嫌いな人居るけど。
    Wend
    
    'google検索項目(name=q)にセットする。
    objIE.Document.getElementsByName("q")(0).Value = "三流"
   
End Sub

まぁ、こんな感じです。
自分でも不思議です。。。う〜ん、なぜと聞かれると答えにくいですね。
もしかして、sだと配列で返すので(0)でs無しはそのまま使えるのかなぁ?
またまた、気になるけど、ひとまずこんな感じでした。

http://q.hatena.ne.jp/1260856896 が キッカケでした。

よく、javascriptでみかける[0]は、コンパイルエラーでした。

実行時エラー '431'えっ、.allからだと、何でだ・・・これは、表示待ちかなぁそれとも?

↑、あれれ、普通、.allがない方が怪しいのに。.bodyだと大丈夫なのか?試してみたくなった。
.bodyもNGで実行時エラー431でした。
う〜ん、
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/f8e740ab-ff9b-46a4-b274-7e1805315ce4
↑ここみると、.allで行ってるから違うなぁ。[0]でも通っているし(これは、言語かなぁ)

まぁ、そんな感じで、疑問がイロイロと残りますね。

いつも、楽して、
.all("名前")とかやっているから、キレイに書く .getElementsByNameとか出てくると答えに困ってしまったり・・・

Ken3 ホームページ 目次

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

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



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