エクセルVBAでのIE操作について教えてください。
未読分:7件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#7 2015年1月30日(金)01時24分 From: がんばるん | 返事 削除 変更 |
TAKAのメッセージ(#6)への返事 > がんばるんのメッセージ(#1)への返事 > 明確な回答はできませんが、IE11の場合、IEのセキュリティパッチの関係で > フレーム内にアクセス出来ない事例という話を聞いたことがあります。 > 違ったらスミマセン > IEのセキュリティパッチが関係しているんですかー 私の知識ではまだまだですね。。。 |
Message#6 2015年1月29日(木)16時06分 From: TAKA | 返事 削除 変更 |
がんばるんのメッセージ(#1)への返事 明確な回答はできませんが、IE11の場合、IEのセキュリティパッチの関係で フレーム内にアクセス出来ない事例という話を聞いたことがあります。 違ったらスミマセン > エクセルVBAでのIE操作について教えてください。 > エクセルでスタッフリストを作成していて、 > そこからLANにある勤怠システムにアクセスし > 先ずログインしたいのですが下記抜粋のように > for each ~ nextで試してみても反応しません。 > > Dim ie As InternetExplorer, obj As Object > > For Each obj In ie.document.getElementsByTagName("input") > If obj.Name="ct100$edtOpeCode" Then > obj.Value="テスト" > ElseIf obj.Name="ct100$btnLogin" Then > obj.Click > End If > Next obj > > > ページのソース抜粋(カッコ内はname属性)は下記の通りです > 多分frameやらdivで色々手繰るには別な方法で無ければ無理 > とは思いますが… > html > >frameset(MainFrameSet) > >>frame(DataFrame) > >>>html > >>>>body > >>>>>form(Form1) > >>>>>>table(tblMain) > >>>>>>>tbody > >>>>>>>>tr > >>>>>>>>>td > >>>>>>>>>>div > >>>>>>>>>>>div > >>>>>>>>>>>>input(ct100$edtOpeCode) > > 似たような内容を調べてみましたが > 初心者でよく分からないのでご教示 > 宜しくお願いします。 |
Message#5 2015年1月28日(水)02時05分 From: ガッツ | 返事 削除 変更 |
> ガッツさん、回答有難うございます。 > ご指摘に倣って記述しましたが途中でエラーと > なってしまいます。 > 途中にあるformやtableなども同様に指定すれば > 取得可能なでしょうか。 > > 例えばie.document.frames("DataFrame")_ > .document.forms("Form1").document_ > .getElementsByTagName("input")のように・・・ > とはいえ上記で試しても同様にエラーがでますが(汗) > > 理解が浅くて恐縮ですが宜しくお願いします 実は私も手探り状態でやっている趣味人です。 ソース全体がわかればもう少し調べられると思いますが・・・ 試すとすればこんなことも考慮したらどうでしょう。 .nameより、.idとか.valueのほうをよく見かけます。 正解でなくて、ごめんなさいね。 |
Message#4 2015年1月28日(水)02時02分 From: がんばるん | 返事 削除 変更 |
ガッツのメッセージ(#3)への返事 > frameの操作部分がないからでないでしょうか。 > > For Each obj In ie.document.frames("DataFrame").document.getElementsByTagName("input") ガッツさん、回答有難うございます。 ご指摘に倣って記述しましたが途中でエラーと なってしまいます。 途中にあるformやtableなども同様に指定すれば 取得可能なでしょうか。 例えばie.document.frames("DataFrame")_ .document.forms("Form1").document_ .getElementsByTagName("input")のように・・・ とはいえ上記で試しても同様にエラーがでますが(汗) 理解が浅くて恐縮ですが宜しくお願いします |
Message#3 2015年1月28日(水)02時01分 From: ガッツ | 返事 削除 変更 |
frameの操作部分がないからでないでしょうか。 For Each obj In ie.document.frames("DataFrame").document.getElementsByTagName("input") |
Message#2 2015年1月28日(水)02時00分 From: ミッツ | 返事 削除 変更 |
HTMLソースが抜粋では、原因の特定が難しいと思います。抜粋した通りの順番にタグを並べても、何も表示されないページが出来上がってしまうので、実験のしようがないのです。 ちなみに、きちんとフレーム用のHTMLソースを分けた上で、frameタグで、src属性に指定すれば、きちんと表示されましたし、別の方の回答で述べられている通りの方法でアクセスも可能でした。 対象としているURLか、それが無理ならば原型に近い形でのHTMLソースを提示してください。 |
Message#1 2015年1月28日(水)01時58分 From: がんばるん | 返事 削除 変更 |
エクセルVBAでのIE操作について教えてください。 エクセルでスタッフリストを作成していて、 そこからLANにある勤怠システムにアクセスし 先ずログインしたいのですが下記抜粋のように for each ~ nextで試してみても反応しません。 Dim ie As InternetExplorer, obj As Object For Each obj In ie.document.getElementsByTagName("input") If obj.Name="ct100$edtOpeCode" Then obj.Value="テスト" ElseIf obj.Name="ct100$btnLogin" Then obj.Click End If Next obj ページのソース抜粋(カッコ内はname属性)は下記の通りです 多分frameやらdivで色々手繰るには別な方法で無ければ無理 とは思いますが… html >frameset(MainFrameSet) >>frame(DataFrame) >>>html >>>>body >>>>>form(Form1) >>>>>>table(tblMain) >>>>>>>tbody >>>>>>>>tr >>>>>>>>>td >>>>>>>>>>div >>>>>>>>>>>div >>>>>>>>>>>>input(ct100$edtOpeCode) 似たような内容を調べてみましたが 初心者でよく分からないのでご教示 宜しくお願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降