aタグのリンククリックについて教えてください

最近の書き込み件数: 今日 0件、昨日 0件
未読分:16件

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)


Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

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

何が悪いのかご指摘お願いします。

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com