VBAでjavascriptを操作
未読分:5件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#5 2014年11月28日(金)14時02分 From: シャビーシック | 返事 削除 変更 |
>下記はjavascriptに制御を渡しているということなのでしょうか。 IEのJavaScriptエンジン( Chakra )で実行されるって事なのでは。 http://msdn.microsoft.com/en-us/library/aa752642%28v=vs.85%29.aspx ちなみに JavaScript での配列の添字は、()ではなくて、[]で指定します。 (getElementsByClassNameからgetElementByIdに変更されたのはその辺が理由かなと) |
Message#4 2014年11月28日(金)06時31分 From: ミシュラン | 返事 削除 変更 |
>それをVBAを使って動かすことはできるのは理解しています。 と、いいはってもね。結局理解してないってことだと思いますよ。 IEのインスタンスを作成して、IEのオブジェクトを操作しているってことを理解していないですよね。 IEのオブジェクトおよびHTMLオブジェクト、JavaScriptのオブジェクトのツリー構造は理解していますでしょうか? 見た事無い??? で、あれば、リファレンスサイトをちゃんと0から見るか、本屋いって、サル本を買って読んでください。 IEにロードされた、HTML文書は、IEのオブジェクトのツリー構造の配下にあります。当然、そこにJavaScriptオブジェクトのツリー構造もあります。なので、IEのインスタンスを作成したってことは、IEオブジェクトをドットで区切って、HTML, CSS, JavaScript オブジェクト、メソッド、プロパティーを操作する事になります。 その下には、VBAのオブジェクトも、メソッドも、プロパティーも在りません。 ただし、new 演算子等、 VBAのオブジェクトの下に他のオブジェクトのインスタンスを割り当てると、いかにも、VBAの関数が使えそうな、気になりますが、気になるだけで、使えません。その配下は、他のオブジェクトのツリー構造になっています。 上記で >その場合、javascriptのコンパイルをしているのはブラウザでしょうか? >それともWEBサーバー側でしょうか。 この、あほな質問の回答になっているかと思いますよ。サーバーサイトスクリプトで動作しているなら、ともかく、クライアントのブラウザにロードされたら、そのクライアントのオブジェクトの配下であって、サーバーオブジェクトにはなりません。そのようなやり方もありますが、内容的に、それらのサーバーサイドスクリプトの質問ではないですよね。 |
Message#3 2014年11月27日(木)18時03分 From: ゴリゴリ | 返事 削除 変更 |
さっそくの返答ありがとうございます。 ie.document.getElementById('popOK').click 申し訳ありませんが、上記との違いがよく分かっておりません。 上記がVBAでIE制御をしていて、下記はjavascriptに制御を渡しているということなのでしょうか? それともjavascriptが単独で制御しているものなのでしょうか? その場合、javascriptのコンパイルをしているのはブラウザでしょうか? それともWEBサーバー側でしょうか? ie.document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 基本がよく分かっていない部分もありますが、なにかしらの対策方法がありましたらご教授お願いします。 |
Message#2 2014年11月27日(木)18時01分 From: ミシュラン | 返事 削除 変更 |
>このclick()はjavascriptの関数(メソッド?)なのでしょうか。 clickメソッドは、(getElementByIdメソッドが返す)IHTMLElementオブジェクトのメンバですね。 http://msdn.microsoft.com/en-us/library/aa752277%28v=vs.85%29.aspx >上記のコードはIDの部分を変えてればどんな getElementByIdに限らず、getElementsByTagNameやgetElementsByClassNameでも大丈夫なのでは? ただし、getElementsByTagNameとgetElementsByClassNameには添え字が必要です。 |
Message#1 2014年11月27日(木)03時09分 From: ゴリゴリ | 返事 削除 変更 |
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の部分を変えてればどんなページにも使えるものなのでしょうか。 恐れ入りますが、ご教示お願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降