リンククリックについて
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2015年1月27日(火)20時52分 From: VBAマスター | 返事 削除 変更 |
skyのメッセージ(#3)への返事 > なかなか難しく。。。 > 引数ですか〜。。。難しいですね。。。 > VBAだけじゃないですが、引数・変数・戻り値・オブジェクト・プロパティ・メソッドなどなど基礎をしっかり理解できていないと難しいですよね。 この辺はプログラムの共通内容になるんで、今回を期にしっかり理解していくのもいいかもですね。 ↓この辺りをみたらちょっとは分かると思いますよ。 http://www.vba-ie.net/programing/procedure.html http://www.vba-ie.net/programing/variable.html この前をカスタマイズすると Sub linkClick(objIE As InternetExplorer, _ aTagStr As String, _ Optional ieTarget As String = "_self") の部分を Sub linkClick(objIE As InternetExplorer, _ aTagStr As Range, _ Optional ieTarget As String = "_self") にすればたぶんいけるはず。。。 |
Message#3 2015年1月27日(火)18時36分 From: sky | 返事 削除 変更 |
なかなか難しく。。。 引数ですか〜。。。難しいですね。。。 VBAマスターのメッセージ(#2)への返事 > skyのメッセージ(#1)への返事 > > > 度々お世話になります。 > > リンクをクリックさせる時、anchorにinnerTextで動作させますよね? > > 多分、あまり使用する事はないかと思うのですが、下記の様に・・・ > > "vba-ie"をクリックさせるのではなく、セル「Range("A1")」の文字列を代入させる事は出来るのでしょうか? > > Range("A1")を代入というのは > > > > > '「vba-ie」が入っているリンクをクリック > > Call linkClick(objIE, "vba-ie") > > > > の部分を変更して > > Call linkClick(objIE, Range("A1")) > > したいということですか? > > 以下のlinkClickを見ると > > http://www.vba-ie.net/code/linkclick.html > > Sub linkClick(objIE As InternetExplorer, _ > aTagStr As String, _ > Optional ieTarget As String = "_self") > > For Each objTag In objIE.document.getElementsByTagName("a") > > If InStr(objTag.outerHTML, aTagStr) > 0 Then > > objTag.target = ieTarget > > objTag.Click > > Call ieCheck(objIE) > > Exit For > > End If > > Next > > End Sub > > になっていて、引数ieTarget がString なんで文字列しか扱えないんでしょう。 > > Range("A1")はオブジェクトなんで、RangeかObjectに変えればうまくいきそうな気がしますが、試していないので責任はもてません・・・ > > もしくは引数を設定したlinkClickサブルーチンを使わないので処理の中に組み込めばデータ型をきにする必要はないかもですね。 |
Message#2 2015年1月20日(火)14時09分 From: VBAマスター | 返事 削除 変更 |
skyのメッセージ(#1)への返事 > 度々お世話になります。 > リンクをクリックさせる時、anchorにinnerTextで動作させますよね? > 多分、あまり使用する事はないかと思うのですが、下記の様に・・・ > "vba-ie"をクリックさせるのではなく、セル「Range("A1")」の文字列を代入させる事は出来るのでしょうか? Range("A1")を代入というのは > > '「vba-ie」が入っているリンクをクリック > Call linkClick(objIE, "vba-ie") > の部分を変更して Call linkClick(objIE, Range("A1")) したいということですか? 以下のlinkClickを見ると http://www.vba-ie.net/code/linkclick.html Sub linkClick(objIE As InternetExplorer, _ aTagStr As String, _ Optional ieTarget As String = "_self") For Each objTag In objIE.document.getElementsByTagName("a") If InStr(objTag.outerHTML, aTagStr) > 0 Then objTag.target = ieTarget objTag.Click Call ieCheck(objIE) Exit For End If Next End Sub になっていて、引数ieTarget がString なんで文字列しか扱えないんでしょう。 Range("A1")はオブジェクトなんで、RangeかObjectに変えればうまくいきそうな気がしますが、試していないので責任はもてません・・・ もしくは引数を設定したlinkClickサブルーチンを使わないので処理の中に組み込めばデータ型をきにする必要はないかもですね。 |
Message#1 2015年1月20日(火)08時29分 From: sky | 返事 削除 変更 |
度々お世話になります。 リンクをクリックさせる時、anchorにinnerTextで動作させますよね? 多分、あまり使用する事はないかと思うのですが、下記の様に・・・ "vba-ie"をクリックさせるのではなく、セル「Range("A1")」の文字列を代入させる事は出来るのでしょうか? Sub sample() Dim objIE As InternetExplorer 'InternetExplorerでテスト用フォームページを起動 Call ieView(objIE, "http://www.vba-ie.net/code/test.html") '「vba-ie」が入っているリンクをクリック Call linkClick(objIE, "vba-ie") End Sub なぜ、この様な事を?と思われている方も多いかと・・・ 仕事上詳しい名称をだせないので、例えで書かせていただきます。 仕様書をメーカー様と共有しており、車種・タイプを検索させると(Frame1)、該当車種等が一覧で表示されます。(Frame2) その横には年式等が表示されております。 その車種名をクリックすると、PDFにて仕様書が表示されます。(Frame2) Frame2の一覧 +++++++++++++++++++++++++++++++++++++++++ 車種 タイプ 年式 +++++++++++++++++++++++++++++++++++++++++ プリウス アルファ 2001 +++++++++++++++++++++++++++++++++++++++++ プリウス 1990 +++++++++++++++++++++++++++++++++++++++++ ↑ 車種の部分がリンク <a href=http://abc-co.jp/shiyou/prius-a.pdf>プリウス</a> <a href=http://abc-co.jp/shiyou/prius-1990.pdf>プリウス</a> という内容になるので、アンカーからインナーテキストで処理する際、 選択ができず、表記ができません。 これを解決するには、リンクのHTMLを出力リストなどに一覧を掲載して、 Range("A1")に代入し、実行させればという考えなのです。 一日一点ならよいのですが、一日に数十もの点数をこなすで、できればマクロで処理できればと考えています。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降