- 締切済み
VBAでjavascriptを操作
カテゴリが違っていたら申し訳ありません。 VBAでIEを制御する際、色々調べているとjavascriptを使うシーンが たびたび出てくるのですが、あれはIEで読み込んだページ内にあるものを使っているのですか? それともIEの中に基本的な関数やメソッドが入っていて それも含め呼び出して使っているのでしょうか。 HTMLのソースを見てjavascriptのソースが分かるものについては、 それをVBAを使って動かすことはできるのは理解しています。 ページ内に存在しない基本的なjavascriptのコードは vbaだけで呼び出せたりするのですか? たとえば下記のページのOKボタンをクリックする場合、 http://kamicha1.web.fc2.com/Excel/Test20090726.html 下記のコードをVBEに記載しました。 このclick()はjavascriptの関数(メソッド?)なのでしょうか。 HTMLをclick()で検索しても該当はありませんでした。 ie.document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 分かりにくい文章で申し訳ないのですが、 上記のコードはIDの部分を変えてればどんなページにも使えるものなのでしょうか。 恐れ入りますが、ご教示お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kumatti1
- ベストアンサー率60% (73/121)
>下記はjavascriptに制御を渡しているということなのでしょうか。 IEのJavaScriptエンジン( Chakra )で実行されるって事なのでは。 http://msdn.microsoft.com/en-us/library/aa752642%28v=vs.85%29.aspx ちなみに JavaScript での配列の添字は、()ではなくて、[]で指定します。 (getElementsByClassNameからgetElementByIdに変更されたのはその辺が理由かなと)
- lupin-333333
- ベストアンサー率31% (294/933)
>それをVBAを使って動かすことはできるのは理解しています。 と、いいはってもね。結局理解してないってことだと思いますよ。 IEのインスタンスを作成して、IEのオブジェクトを操作しているってことを理解していないですよね。 IEのオブジェクトおよびHTMLオブジェクト、JavaScriptのオブジェクトのツリー構造は理解していますでしょうか? 見た事無い??? で、あれば、リファレンスサイトをちゃんと0から見るか、本屋いって、サル本を買って読んでください。 IEにロードされた、HTML文書は、IEのオブジェクトのツリー構造の配下にあります。当然、そこにJavaScriptオブジェクトのツリー構造もあります。なので、IEのインスタンスを作成したってことは、IEオブジェクトをドットで区切って、HTML, CSS, JavaScript オブジェクト、メソッド、プロパティーを操作する事になります。 その下には、VBAのオブジェクトも、メソッドも、プロパティーも在りません。 ただし、new 演算子等、 VBAのオブジェクトの下に他のオブジェクトのインスタンスを割り当てると、いかにも、VBAの関数が使えそうな、気になりますが、気になるだけで、使えません。その配下は、他のオブジェクトのツリー構造になっています。 上記で >その場合、javascriptのコンパイルをしているのはブラウザでしょうか? >それともWEBサーバー側でしょうか。 この、あほな質問の回答になっているかと思いますよ。サーバーサイトスクリプトで動作しているなら、ともかく、クライアントのブラウザにロードされたら、そのクライアントのオブジェクトの配下であって、サーバーオブジェクトにはなりません。そのようなやり方もありますが、内容的に、それらのサーバーサイドスクリプトの質問ではないですよね。
- kumatti1
- ベストアンサー率60% (73/121)
>このclick()はjavascriptの関数(メソッド?)なのでしょうか。 clickメソッドは、(getElementByIdメソッドが返す)IHTMLElementオブジェクトのメンバですね。 http://msdn.microsoft.com/en-us/library/aa752277%28v=vs.85%29.aspx >上記のコードはIDの部分を変えてればどんな getElementByIdに限らず、getElementsByTagNameやgetElementsByClassNameでも大丈夫なのでは。
補足
さっそくの返答ありがとうございます。 ie.document.getElementById('popOK').click 申し訳ありませんが、上記との違いがよく分かりません。 上記がVBAで制御していて、下記はjavascriptに制御を渡しているということなのでしょうか。 その場合、javascriptのコンパイルをしているのはブラウザでしょうか? それともWEBサーバー側でしょうか。 ie.document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200