三流君 ken3のmemo置き場

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

挨拶・自己紹介:「こんな感じ」や「あの、あの」と活舌の悪い、
三流プログラマーのオッサンです

当ブログではGoogle AdSenseおよび各種アフィリエイトプログラムを利用して広告を配信しています。

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とか出てくると答えに困ってしまったり・・・


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

当ブログではGoogle AdSenseおよび各種アフィリエイトプログラムを利用して広告を配信しています。


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~