aタグのリンククリックについて教えてください
未読分:16件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#16 2015年5月25日(月)13時13分 From: IE操作初心者 | 返事 削除 変更 |
回答いただきありがとうございます。 返信遅くなりすいません。 参考にさせて頂きます。 気ずるのメッセージ(#15)への返事 > sub sample() > > '最終行取得 > r = maxRC(, 1) > > call ieview(objIE,"http://www.yahoo.co.jp") > > for i = 1 to r > > call ienavi(objIE,cells(i,"A") > > cells(i,"D") = objIE.document.body.outerhtml > > next i > > end sub > > > Function maxRC(Optional sheetName As String = "mySheet", _ > Optional rcNo As Variant = 1, _ > Optional addRC As Integer = 0, _ > Optional typeRC As String = "R") As Long > > If sheetName = "mySheet" Then > sheetName = ActiveSheet.Name > End If > > If typeRC = "R" Then > maxRC = Sheets(sheetName).Cells(Rows.Count, rcNo).End(xlUp).row + addRC > ElseIf typeRC = "C" Then > maxRC = Sheets(sheetName).Cells(rcNo, Columns.Count).End(xlToLeft).Column + addRC > End If > > End Function |
Message#15 2015年5月18日(月)16時14分 From: 気ずる | 返事 削除 変更 |
sub sample() '最終行取得 r = maxRC(, 1) call ieview(objIE,"http://www.yahoo.co.jp") for i = 1 to r call ienavi(objIE,cells(i,"A") cells(i,"D") = objIE.document.body.outerhtml next i end sub Function maxRC(Optional sheetName As String = "mySheet", _ Optional rcNo As Variant = 1, _ Optional addRC As Integer = 0, _ Optional typeRC As String = "R") As Long If sheetName = "mySheet" Then sheetName = ActiveSheet.Name End If If typeRC = "R" Then maxRC = Sheets(sheetName).Cells(Rows.Count, rcNo).End(xlUp).row + addRC ElseIf typeRC = "C" Then maxRC = Sheets(sheetName).Cells(rcNo, Columns.Count).End(xlToLeft).Column + addRC End If End Function |
Message#14 2015年5月15日(金)18時01分 From: IE操作初心者 | 返事 削除 変更 |
aタグについて解決しました。 別件での質問ですが エクセル上で A B C D 1 2 3 4 ・・・ 上記のようにa列にデータが入っていてそのデータを上から一つずつwebで検索し取得したデータをd列に貼り付ける場合、どのようなループ処理を組めばいいのか教えてください。 初歩的な質問かと思いますが宜しくお願いします。 |
Message#13 2015年5月1日(金)15時54分 From: IE操作初心者 | 返事 削除 変更 |
以下二つのソースからわかることがあったら教えてください。 宜しくお願いします。 |
Message#12 2015年5月1日(金)15時53分 From: IE操作初心者 | 返事 削除 変更 |
(function() { function drawManufacturers(response) { hideIndicator(); jQuery.each(response, function() { jQuery("<OPTION>") .val(this) .text(this) .appendTo("#manufacturer"); }); } function onChangeCategory(ev) { var cat = jQuery("#category option:selected").val(); showIndicator(); jQuery("#manufacturer").empty(); jQuery("#items").empty(); jQuery("#item-detail-content").empty(); jQuery.ajax( { url: "manufacturers.t.json", type: "POST", data: {"category": cat}, dataType: "json", success: drawManufacturers }); } function onChangeManufacturer(ev) { var cat = jQuery("#category option:selected").val(); var mf = jQuery("#manufacturer option:selected").val(); showIndicator(); jQuery("#items").empty(); jQuery("#item-detail-content").empty(); jQuery.ajax( { url: "items.t.json", type: "POST", data: { "category": cat, "manufacturer": mf }, dataType: "json", success: drawItems }); } function drawItems(response) { hideIndicator(); if (response.length == 0) { alert("商品がありません"); return; } jQuery.each(response, function() { var tr = jQuery("<TR>"); var td = jQuery("<TD>"); jQuery("<TD>") .text(this.jan) .appendTo(tr); jQuery("<TD>") .text(this.code) .appendTo(tr); jQuery("<TD>") .text(this.color) .appendTo(tr); jQuery("<A>") .attr("href", "#") .prop("data-jan", this.jan) .text("詳細表示") .click(onClickItem) .appendTo(td); td.appendTo(tr); tr.appendTo("#items"); }); } function drawItemDetail(response) { var tr; hideIndicator(); if (!response.jan) { alert("該当する商品はありません"); return; } tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("JAN") .appendTo(tr); jQuery("<TD>") .text(response.jan) .appendTo(tr); tr.appendTo("#item-detail-content"); tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("型番") .appendTo(tr); jQuery("<TD>") .text(response.code) .appendTo(tr); tr.appendTo("#item-detail-content"); tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("色") .appendTo(tr); jQuery("<TD>") .text(response.color) .appendTo(tr); tr.appendTo("#item-detail-content"); tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("参考売価") .appendTo(tr); jQuery("<TD>") .text(response.price) .appendTo(tr); tr.appendTo("#item-detail-content"); tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("NET(税別)") .appendTo(tr); jQuery("<TD>") .text(response.price_net) .appendTo(tr); tr.appendTo("#item-detail-content"); jQuery.each(response.stocks, function() { tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("在庫(" + this.shop + ")") .appendTo(tr); jQuery("<TD>") .text(this.stock_mark) .appendTo(tr); tr.appendTo("#item-detail-content"); /* tr = jQuery("<TR>"); jQuery("<TD>") .addClass("row-name") .text("受取方法") .appendTo(tr); jQuery("<TD>") .text((this.direct == "1") ? "店納品可": "店納品不可") .appendTo(tr); tr.appendTo("#item-detail-content"); */ }); } function onClickItem(ev) { var jan = jQuery(ev.target).prop("data-jan"); doSearchItem(jan); return false; } function doSearchItem(jan) { showIndicator(); jQuery("#item-detail-content").empty(); jQuery.ajax( { url: "detail.t.json", type: "POST", data: { "jan": jan }, dataType: "json", success: drawItemDetail, error: function() { hideIndicator(); alert("該当する商品はありません"); } }); } function showIndicator() { jQuery("#fill-mask").show(); jQuery("#loading-indicator-box").show(); } function hideIndicator() { jQuery("#fill-mask").hide(); jQuery("#loading-indicator-box").hide(); } function onClickItemCodeButton(ev) { var jan = jQuery("#itemcode").val(); jQuery("#manufacturer").empty(); jQuery("#items").empty(); jQuery("#item-detail-content").empty(); jQuery("#category").prop("selectedIndex", -1); if (jan.length > 0) { jQuery.ajax( { url: "items.t.json", type: "POST", data: { "itemcode": jan }, dataType: "json", success: drawItems }); } } jQuery(function() { hideIndicator(); jQuery("#category").change(onChangeCategory); jQuery("#manufacturer").change(onChangeManufacturer); jQuery("#itemcode_button").click(onClickItemCodeButton); }); })(); |
Message#11 2015年5月1日(金)15時52分 From: IE操作初心者 | 返事 削除 変更 |
htmlソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"> <html lang="ja"><head> <base href="https://www.berrys1.jp/stock/" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <script src="../js/jquery-1.10.1.min.js" type="text/javascript"></script> <script src="js/stock.js" type="text/javascript"></script> <link href="css/styles.css" rel="stylesheet" /> <title></title> </head><body> <div id="header"> <div class="head_titie"> <span class="t16 bold title">テックランド在庫照会</span> (※この画面を利用するには、直取用IDカードとビジネスカードの申請が必要です。) </div> <div class="head_logo"> <img width="129" height="45" alt="BFC.net" src="image/logo.jpg" border="0" /> </div> </div> <div class="sps10"></div> <div class="container"> <div class="grid12 t15 bold"> 分類とメーカーを選択するか、下段の商品型番・JANコード検索に入力して下さい。 </div> <div class="sps10"></div> <div class="grid6 first"> <div class="grid3 first"> <div> <img width="220" height="25" alt="分類を選択してください。" src="image/title3-1.jpg" /> <div class="sps10"></div> <select name="category" id="category" size="10"> <option value="液晶テレビ ">液晶テレビ </option> <option value="テレビ台">テレビ台</option> <option value="ビデオレコーダ">ビデオレコーダ</option> <option value="ビデオプレイヤー">ビデオプレイヤー</option> <option value="冷蔵庫・冷凍庫">冷蔵庫・冷凍庫</option> <option value="電子レンジ">電子レンジ</option> <option value="炊飯器">炊飯器</option> <option value="洗濯機">洗濯機</option> <option value="掃除機">掃除機</option> <option value="エアコン">エアコン</option> <option value="空気清浄機">空気清浄機</option> <option value="ビデオカメラ">ビデオカメラ</option> <option value="デジタルチューナ">デジタルチューナ</option> <option value="地デジアンテナ">地デジアンテナ</option> <option value="映像アンテナ部材">映像アンテナ部材</option> <option value="AVコンポ">AVコンポ</option> <option value="アンプスピーカー">アンプスピーカー</option> <option value="ポータブルオーディオ">ポータブルオーディオ</option> <option value="CDラジカセ">CDラジカセ</option> <option value="ICレコーダー">ICレコーダー</option> <option value="AVアクセサリー">AVアクセサリー</option> <option value="IHクッキングヒ">IHクッキングヒ</option> <option value="食器洗い乾燥機">食器洗い乾燥機</option> <option value="生ごみ処理機">生ごみ処理機</option> <option value="キッチン調理器">キッチン調理器</option> <option value="調理/部材">調理/部材</option> <option value="理美容家電">理美容家電</option> <option value="マッサージチェア">マッサージチェア</option> <option value="電気治療器家庭用">電気治療器家庭用</option> <option value="健康家電">健康家電</option> <option value="除湿機">除湿機</option> <option value="照明器具">照明器具</option> <option value="小物家電換気扇">小物家電換気扇</option> <option value="洗濯照明美容部材">洗濯照明美容部材</option> <option value="電話機">電話機</option> <option value="ファックス">ファックス</option> <option value="パソコン">パソコン</option> <option value="デジタルカメラ">デジタルカメラ</option> <option value="プリンター">プリンター</option> <option value="オフィス用品 メディア">オフィス用品 メディア</option> <option value="部材パソコン電話">部材パソコン電話</option> <option value="携帯電話アクセサ">携帯電話アクセサ</option> <option value="防犯・防災">防犯・防災</option> <option value="エコキュート">エコキュート</option> <option value="太陽光発電">太陽光発電</option> <option value="火災報知器">火災報知器</option> <option value="家電/その他">家電/その他</option> <option value="扇風機サーキュレ">扇風機サーキュレ</option> <option value="こたつ">こたつ</option> <option value="電気暖房器具">電気暖房器具</option> <option value="ホットカーペット">ホットカーペット</option> <option value="石油・ガス暖房">石油・ガス暖房</option> <option value="石油ファンヒータ">石油ファンヒータ</option> <option value="季節関連/部材">季節関連/部材</option> <option value="電池電球配線器具">電池電球配線器具</option> <option value="AV記録メディア">AV記録メディア</option> <option value="CD−Rカセット">CD−Rカセット</option> </select> </div> </div> <div class="grid3"> <div> <img width="220" height="25" alt="メーカーを選択してください。" src="image/title3-2.jpg" /> <div class="sps10"></div> <select name="manufacturer" id="manufacturer" size="10"></select> </div> </div> </div> <div class="grid6"> <table border="0" cellSpacing="0" cellPadding="0"> <thead> <tr> <th> <img width="140" height="25" alt="JAN" src="image/title2-1.jpg" /> </th> <th> <img width="140" height="25" alt="型番" src="image/title2-2.jpg" /> </th> <th> <img width="60" height="25" alt="色" src="image/title2-3.jpg" /> </th> <th> <img width="120" height="25" alt="" src="image/title2-4.jpg" /> </th> </tr> </thead> <tbody id="items"> <tr> <td> 8710103616634 </td> <td> QC5580 </td> <td></td> <td> <a href="#">詳細表示</a> </td> </tr> </tbody> </table> </div> <div class="sps30"></div> <!--<DIV ID="condition-blocks">--> <div class="grid6 first"> <img width="460" height="25" alt="商品型番・JANコード検索" src="image/title1.jpg" /> <div class="sps10"></div> <input name="itemcode" id="itemcode" type="text" /> <input id="itemcode_button" type="button" value="検索" /> <div class="sps30"></div> ※商品型番は-(ハイフン)付きで入力、色は入力しないで下さい。<br /> JANコードの場合は、13桁もしくは8桁で入力して下さい。 </div> <div class="grid6"> <div id="item-detail-box"> <img width="460" height="25" alt="商品詳細情報" src="image/title4.jpg" /> <div class="sps10"></div> <table> <tbody id="item-detail-content"> <tr> <td class="row-name"> JAN </td> <td> 8710103616634 </td> </tr> <tr> <td class="row-name"> 型番 </td> <td> QC5580 </td> </tr> <tr> <td class="row-name"> 色 </td> <td></td> </tr> <tr> <td class="row-name"> 参考売価 </td> <td> \7,280 </td> </tr> <tr> <td class="row-name"> NET(税別) </td> <td> \5,211 </td> </tr> <tr> <td class="row-name"> 在庫(LABI品川大井町店) </td> <td> ○ </td> </tr> </tbody> </table> </div> <div class="sps30"></div> <span class="t15 bold"> 在庫 ☆:10台以上 ◎:5〜9台 ○:2〜4台 △:1台<br /> (テックランドは展示品含む) </span> </div> <br class="clear-all" /> <!--</DIV>--> <div class="sps40"></div> <div class="sps40"></div> <div align="center" class="grid6 first"> <input onclick="location.reload();" type="button" value=" 検索情報のリセット " /> </div> <div align="center" class="grid6"> <input onclick="window.close()" type="button" value=" ウィンドウを閉じる " /> </div> <div id="fill-mask" style="display: none;"></div> <div id="loading-indicator-box" style="display: none;"> <div id="loading-indicator-text"> 検索中... </div> <img src="../images/ajax-loader.gif" /> </div> </div> <div class="sps40"></div> <div id="footer"></div> </body></html> |
Message#10 2015年4月30日(木)13時04分 From: IE操作初心者 | 返事 削除 変更 |
VBAマスターのメッセージ(#9)への返事 回答ありがとうございます。 不明ですか。ありがとうございます。 > onClickItemでなにかしてそうですが、詳細は不明ですね。 > > ただ、関係しているかもしれません。 |
Message#9 2015年4月29日(水)12時22分 From: VBAマスター | 返事 削除 変更 |
onClickItemでなにかしてそうですが、詳細は不明ですね。 ただ、関係しているかもしれません。 |
Message#8 2015年4月28日(火)13時34分 From: IE操作初心者 | 返事 削除 変更 |
> VBAマスターのメッセージ(#6)への返事 > 回答ありがとうございます。 jQuery("<A>") .attr("href", "#") .prop("data-jan", this.jan) .text("詳細表示") .click(onClickItem) .appendTo(td); ちなみにこのコードは関係ありますか? 宜しくお願いします。 |
Message#7 2015年4月28日(火)12時11分 From: IE操作初心者 | 返事 削除 変更 |
VBAマスターのメッセージ(#6)への返事 回答ありがとうございます。 javascriptで行っている場合にはまた別の処理が必要ということですよね。 もう一度学びなおしてやってみます。 > クリックした状態であれば、クリック処理をjavascriptでおこなっているのかもしれませんね。 > > サイト情報がないのでなんともいえませんが。 |
Message#6 2015年4月27日(月)20時18分 From: VBAマスター | 返事 削除 変更 |
クリックした状態であれば、クリック処理をjavascriptでおこなっているのかもしれませんね。 サイト情報がないのでなんともいえませんが。 |
Message#5 2015年4月27日(月)14時08分 From: IE操作初心者 | 返事 削除 変更 |
VBAマスターのメッセージ(#4)への返事 回答ありがとうございます。 > If InStr(objLink.outerHTML, keywords) > 0 Then > ↓ > If objLink.innerText = keywords Then 上記に変更し試しましたがうまくできませんでした。 先程1つ1つステップインで進めたところ詳細表示をクリックした状態になったのですが この現象の理由がわかりません。 ループ処理などに問題があるのでしょうか。 宜しくお願いします。 |
Message#4 2015年4月27日(月)13時34分 From: VBAマスター | 返事 削除 変更 |
linkClickは全てのaタグをチェックし、該当するキーワード(詳細表示)が含まれている場合にクリック処理を行いループを終了する処理です。 ですので、「詳細表示」をキーワードにすると以下の3つとも処理の対象となりますが、一番最初にチェックされる<a href="#">詳細表示する</a>がクリックされます。 <a href="#">詳細表示する</a> <a href="#">詳細表示</a> <a href="#">詳細表示しない</a> 条件が「含まれる」ではなく「一致であれば」innertextプロパティ値の比較で一致するものだけをクリックさせればうまくいくかと思います。 If InStr(objLink.outerHTML, keywords) > 0 Then ↓ If objLink.innerText = keywords Then |
Message#3 2015年4月27日(月)12時44分 From: IE操作初心者 | 返事 削除 変更 |
VBAマスターのメッセージ(#2)への返事 > 「詳細表示」は複数存在しませんか? > > linkClickは一度条件が見つかるとExit Forで処理を終了するので、Exit Forを外して処理すると > うまくいくかもしれません。 回答ありがとうございます。 「詳細表示」は検索の方法により複数存在する場合もありますが基本的に1つです。 その場合でも複数とみなされてしまうのでしょうか。 また、javaスクリプト等は関係するのでしょうか。 |
Message#2 2015年4月24日(金)20時08分 From: VBAマスター | 返事 削除 変更 |
IE操作初心者のメッセージ(#1)への返事 > あるURlのie操作で > <a href="#">詳細表示</a> > > の部分をクリックさせたいのですがうまくいきません。 > > 'リンクをクリックして同じウィンドウで表示する > Call linkClick(objIE, "詳細表示")⇒ここがうまくいきません > > 「詳細表示」は複数存在しませんか? linkClickは一度条件が見つかるとExit Forで処理を終了するので、Exit Forを外して処理すると うまくいくかもしれません。 |
Message#1 2015年4月24日(金)16時59分 From: IE操作初心者 | 返事 削除 変更 |
あるURlのie操作で <a href="#">詳細表示</a> の部分をクリックさせたいのですがうまくいきません。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub sample() Dim objIE As InternetExplorer 'データ抽出用ページをIE(InternetExplorer)で起動 Call ieView(objIE, "*******") '検索窓に「検索ワード」と入力 objIE.document.getElementById("itemcode").Value = "QC5580" '検索ボタンを押す Call IEButtonClick(objIE, "検索") 'リンクをクリックして同じウィンドウで表示する Call linkClick(objIE, "詳細表示")⇒ここがうまくいきません End Sub 'リンククリックサブルーチン Sub linkClick(objIE As InternetExplorer, _ keywords As String, _ Optional ieTarget As String = "_self") Dim objLink As Object For Each objLink In objIE.document.Links If InStr(objLink.outerHTML, keywords) > 0 Then objLink.target = ieTarget objLink.Click Call waitNavigation(objIE) Exit For End If Next End Sub 何が悪いのかご指摘お願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降