• 締切済み

エクセルVBAで

エクセルVBAでシート2のL2~L5までに ”取消済” という文字が入ってるセルがあったら、そのセルの11個左のセル(A行)の数字(16桁) とネットのホームページ上にあるチェックボックスのvalueに同じ数字を含んでいるものがあったらそれにチェックをいれたいです。 ちょっとややこしくてわからなくなってしまったのでマクロを教えていただけると嬉しいです。。。 下のはチェックボックスのソースです <tr class="odd"> <td><input type="checkbox" name="selectedOrderId" id="cancelOrder1" value="2012052308652039" onclick="changeButtonStatus();"></td> <td>2012052308652039</td>

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

#まだ閉店前でしょうか? Sub macro()  Dim objIE As Object  Dim i As Integer  Dim myInput As Object  Set objIE = CreateObject("InternetExplorer.Application")  With objIE   .Visible = True   .navigate "http://www.~~~"   While .Busy Or .ReadyState <> 4: DoEvents: Wend   For i = 2 To 5    If Range("L" & i).Value = "取消済" Then     For Each myInput In .document.getElementsByTagName("input")      If myInput.Value = Range("A" & i).Value Then myInput.Click     Next    End If   Next  End With ' objIE.Quit ' Set objIE = Nothing End Sub

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.3

#1、#2です。 すみません、参考URLをつけるのを忘れました。。。 こちらを参照してみてください。

参考URL:
http://www2s.biglobe.ne.jp/iryo/vba/IE/index01.html
aam26928
質問者

お礼

たびたびありがとうございます

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.2

> 自分も一番分からないところがVBAからWebページを操作のところなんですよね~。clickとか空欄に文字を入れたりなら出来るんですが、任意の文字列を探してチェックを入れるのがわからない、、 えっ、じゃあ、ほかの部分はお分かりになってたってことですか? 質問されるときは何が分かってて何が分からないか はっきり書いておかないと、欲しい回答がもらえませんよ。 「VBA Webデータ」でGoogle検索したら 2番目に参考URLのサイトが出てきました。こちらが大いに参考になると思います。 ここの情報を総合しつつ、Google先生にも聞きながら検討すると、 任意の文字列を持つチェックボックスの チェックは例えば下記のコードで実現できそうですよ。 ※#1のロジック例の「配列A」「セルの値Ai」「j」等を使用して表現します。 また、「objIE」はオブジェクトですが、値のセットや初期設定は省略します。 「myForm」は該当Webページのソースで<FORM name="myForm">と宣言されるフォーム名です。 With objIE.Document If セルAiの値 = .getElementById("cancelOrder" & j).innerHTML Then .getElementById("cancelOrder" & j).Checked = True End If いかがでしょうか。 私でもここまで調べられたのですから、質問者さまも がんばってくださいね。

aam26928
質問者

お礼

んー分かると言うか、前に作った他のマクロを引用すれば出来るかな~と思う程度だったんで一応まとめて質問させて頂きました。 ご回答ありがとうございました。私もイロイロ調べます。

  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

私はVBAからWebページを操作するコードの 書き方を知らないので、そのものずばりの コードは書けませんが、ロジックは提供できると 思います。 よろしければご参考までにご覧ください。 えーと、色々と整理なさった方が良いですね。 まず、なさりたいことは、 1.L2~L5に“取消済”の文字列が入っている場合、 対応するA列(縦方向は行ではなく列です)の同じ行のセルを見る。 (L3に“取消済”と入っていればA3を見る) 2.Web上のチェックボックスのvalueを見て、A列の該当セル  (上の例で言えばA3)に入っている値と同じ値であればチェックをいれる。 ということでよろしいでしょうか? だとすれば、ロジックは以下の通りになるかと思います。 1.Webから該当ページのデータを取得し、チェックボックスのvalueを  配列Aに入れておく。 また、各チェックボックスにチェックを入れるかどうかを示す 配列Bを準備する。(各要素の初期値はFalse) 2.Li(i=2から5)までの間、以下3-4を実行する 3.Liに“取消済”の文字列が入っていれば、 対応するA列のセルAiの値を取得する。 4.j=1から配列Aの要素数の間、以下を実行する。 配列A(j)の値=Aiの値であれば、配列B(j)にTrueをセットし、ループを抜ける。 5.配列Bの値を、Web上のチェックボックスにセットし、 該当ページに送る。 不明点があればお問い合わせください。

aam26928
質問者

お礼

自分も一番分からないところがVBAからWebページを操作のところなんですよね~。clickとか空欄に文字を入れたりなら出来るんですが、任意の文字列を探してチェックを入れるのがわからない、、 まぁまだいろいろ試してみます。

関連するQ&A

  • 何番目のクラスか取得するには

    <table> <tr> <td> りんご </td> <td colspan="3" class="class_td"> <input name="color[]" value="1" type="checkbox"> </td> </tr> <tr> <td> みかん </td> <td colspan="3" class="class_td"> <input name="color[]" value="1" type="checkbox"> </td> </tr> <tr> <td> ぶどう </td> <td colspan="3" class="class_td"> <input name="color[]" value="1" type="checkbox"> </td> </tr> </table> チェックボックスにチェックを入れた場合、何番目のclass_tdに属するかを取得したいです。 例えば、みかんにチェックを入れた場合、2と取得できるようにしたいです。 $(this).index('.class_td')では-1となってしまいます。 ご教示頂けますと幸いです。 よろしくお願いいたします。

  • チェックした行の色を変える

    簡単にできそうかなと思ってやってみたら、泥沼状態。 チェックボックスにチェック入れたときにその行をハイライトさせ、チェックはずすと元に戻るようにしたいのですが。 【チェック入れた時の状態】 <TABLE BORDER="1"> <TR> <TD><INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox"></TD> <TD></TD> </TR> <TR BGCOLOR="red"> <TD><INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox" CHECKED></TD> <TD></TD> </TR> <TR> <TD><INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox"></TD> <TD></TD> </TR> </TABLE>

  • チェックボックス設定の方法教えてください

    チェックボックスの設定方法を教えてください。 項目1.大分類にチェックすると中分類と小分類にもチェックが入る。 項目2.中分類にチェックすると小分類にもチェックが入る。 項目2の設定はわかりますが、項目1の設定がどうしてもできません。 <script language=javascript> function allCheck(obj){ f=obj.form num=obj.name.replace("b","") for(var i=0;i<f.length;i++){ if(f[i].name=="s"+num) f[i].checked=obj.checked; } } </script> <FORM> <TABLE border=0> <TBODY> <TR> <TD class=color_1 rowSpan=4><INPUT onclick=allCheck(this) type=checkbox name=b1>大分類</TD> <TD class=color_1 rowSpan=4><INPUT onclick=allCheck(this) type=checkbox name=b1>中分類</TD> <TD class=color_1><INPUT type=checkbox name=s1>小分類</TD></TR> <TR> <TD class=color_2><INPUT type=checkbox name=s1>小分類</TD></TR> <TR> <TD class=color_1><INPUT type=checkbox name=s1>小分類</TD></TR> <TR> <TD class=color_2><INPUT type=checkbox name=s1>小分類</TD></TR> <TR> <TD class=color_1 rowSpan=3><INPUT onclick=allCheck(this) type=checkbox name=b2>中分類 <P></P></TD> <TD class=color_1><INPUT type=checkbox name=s2>小分類</TD></TR> <TR> <TD class=color_2><INPUT type=checkbox name=s2>小分類</TD></TR> <TR> <TD class=color_2><INPUT type=checkbox name=s2>小分類</TD></TR></TBODY></TABLE></FORM> すいませんが、教えて下さい。

  • 複数のチェックボックスをチェックしたい

    質問させてください。 複数のチェックボックスを項目別に全てチェックするようなjqueryの書き方をご教授いただきたいです。 <table> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />a</li> <li><input type="checkbox" name="" value="" />b</li> <li><input type="checkbox" name="" value="" />c</li> <li><input type="checkbox" name="" value="" />d</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />e</li> <li><input type="checkbox" name="" value="" />f</li> <li><input type="checkbox" name="" value="" />g</li> <li><input type="checkbox" name="" value="" />h</li> </td> </tr> <tr> <td> <input type="checkbox" name="" />まとめてチェック </td> </tr> <tr> <td> <li><input type="checkbox" name="" value="" />i</li> <li><input type="checkbox" name="" value="" />j</li> <li><input type="checkbox" name="" value="" />k</li> <li><input type="checkbox" name="" value="" />l</li> </td> </tr> </table> 上記のようにそれぞれの項目に「まとめてチェック」のチェックボックスがあり、 そこに該当するチェック項目は全てチェックorチェックを外す っという挙動の実装を考えています。 jqueryでやりたいのですが、javascript、jqueryがかなり苦手でいまいちいきません。 ググって $(function(){ $('#all').click(function(){ if(this.checked){ $('#check input').attr('checked','checked'); }else{ $('#check input').removeAttr('checked'); } }); }); このソースを見つけたのですが、これだと一つの項目でしか実装できず 項目分このjqueryを書くのも余り良い書き方だと思えません。 どなたか、ご教授お願いいたします。

  • <FORM ACTION= をつけると「宣言されていません」と

    <script language="javascript"> function change(tr,n) { tr.bgColor=CheckBox[n].checked?"#ff0000":"#ffffff"; } </script> 上記のコードで下記のように<form・・ を付けると「宣言されていません」とエラー表示になります。 <FORM ACTION="sample.cgi" METHOD="POST"> <TABLE BORDER="1"> <TR id="tr1"> <TD> <INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox" onclick="change(tr1,0)"></TD> </TR> <TR id="tr2"> <TD> <INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox" onclick="change(tr2,1)"></TR> </TABLE> </form> 下記だと正常です。 <TABLE BORDER="1"> <TR id="tr1"> <TD> <INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox" onclick="change(tr1,0)"></TD> </TR> <TR id="tr2"> <TD> <INPUT TYPE="CHECKBOX" NAME="CheckBox" VALUE="CheckBox" onclick="change(tr2,1)"></TR> </TABLE> ちんぷんかんぷんになってきました。

  • domでの削除

    チェックボックスを使ってループで回しながらTRを削除しようとしているんですが、連続でチェックするとうまくいきません。 ご教授宜しくお願いします。 function test() { var inputs = document.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { if (inputs[i].type == "checkbox" && inputs[i].checked) { tb1.deleteRow(i); } } }; <table border="1" id="tb1"> <tr> <td><input type="checkbox" name="flag" value=""></td> <td>0</td> </tr>      ・      ・      ・ <tr> <td><input type="checkbox" name="flag" value=""></td> <td>9</td> </tr> </table> <input type="button" value="削除" onclick="test();"><br> }

  • 行クリックでチェックボックスをOn/Off、行全体を着色などさせたい

    以下のように、1行に1チェックボックスがあります。  (1) 各行のどこかをクリックするたびにチェックボックスのON/OFFを切り替え  (2) チェックボックスがONである間は、行全体の背景を黄色に塗りつぶす     (チェックが解除されたら黄色着色も解除) といった動作をさせたいのですが、記述方法をご教示いただけますと幸いです。 <table>  <tr>    <td>1</td>    <td>東京</td>    <td><input type="checkbox" name="myvalue" value="1"></td>  </tr>  <tr>    <td>2</td>    <td>神奈川</td>    <td><input type="checkbox" name="myvalue" value="2"></td>  </tr>  <tr>    <td>3</td>    <td>千葉</td>    <td><input type="checkbox" name="myvalue" value="3"></td>  </tr> </table>

  • チェックボックスのチェック処理

    HTMLでボタン押下時にチェックしたいことがあります。 ■カテゴリーA~Cで、カテゴリー毎に選択できるのは一つのみ  (例)「A1・あ」と「A2・お」が選択時はNG ■カテゴリーは最大2つまで選択可能  (例)「A1・い」と「C1・さ」が選択時はOK    「A1・い」と「B2・く」と「C1・さ」が選択時はNG <html> <head> </head><body> <form> <table border="1"> <tr> <td>A1</td> <td><input type="checkbox" name="chk1" value="1">あ</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">い</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">う</td> </tr> <tr> <td>A2</td> <td><input type="checkbox" name="chk1" value="1">え</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">お</td> </tr> <tr> <td>B1</td> <td><input type="checkbox" name="chk1" value="1">か</td> </tr> <tr> <td>B2</td> <td><input type="checkbox" name="chk1" value="1">く</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">け</td> </tr> <tr> <td>C1</td> <td><input type="checkbox" name="chk1" value="1">さ</td> </tr> <tr> <td>C2</td> <td><input type="checkbox" name="chk1" value="1">し</td> </tr> <tr> <td> </td> <td><input type="checkbox" name="chk1" value="1">す</td> </tr> </table> <input type="submit" value="チェック"> </form> </body> </html> すみませんがよろしくお願いします。

  • テーブル行のクリックでチェックボックスの制御

    テーブル行をクリックしたときにその行にあるチェックボックスのON/OFFを 制御したいと思います。 Jqueryで以下サンプルを作成してみました。該当行をクリックするとチェックボックスが ONになったりOFFになったりするのですがチェックボックス自体をクリックするとうまく チェックがONになりません。恐らくチェックボックスをクリックした時はONになっていて、 同時に行をクリックしたとみなされONになっているチェックボックスをOFFにしているのでは ないかと思われます。 チェックボックスをクリックしてもON/OFFがうまくいくようにするためにはどうすればよろしいでしょうか 【サンプル】 <html> <head> <meta charset="UTF-8" /> <script type="text/javascript" src="../jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(function(){ $("#nameTable tr").click(function() { //alert($(data).find(":checkbox").val()); var chk = $(this).find(":checkbox"); if(chk.prop("checked")) { chk.attr("checked", false); } else { chk.attr("checked", true); } }); }); </script> <title>CSS</title> <style type="text/css"> </style> </head> <body bgcolor="rgba(255,0,0,0.15)"> <table id="nameTable" border="1"> <tr><th>名前</th><th>チェックボックス</th></tr> <tr><td>あいうえお</td><td><input type="checkbox" value="1"></td></tr> <tr><td>かきくけこ</td><td><input type="checkbox" value="2"></td></tr> <tr><td>さしすせそ</td><td><input type="checkbox" value="3"></td></tr> <tr><td>たちつてと</td><td><input type="checkbox" value="4"></td></tr> <tr><td>なにぬねの</td><td><input type="checkbox" value="5"></td></tr> </table> </body> </html>

  • フォーム上で複数の同じスクリプトを動作させるには

    選択したチェックボックスのvalue値がテキストボックスに表示されるjavascriptについてなのですが、 一つのフォーム上にclass名の異なる複数のチェックボックスを設置した場合、動作しなくなってしまいます。 正確には最初に記述したチェックボックス(下の場合はkeyword1)が動作しません。 一つのフォーム上でclass名の異なる複数のチェックボックスを設置するには、javascriptをどのように書き換えればいいのでしょうか? よろしくお願いします。 <form method="post" action="sample.cgi" name="hoge"> <td> <script language="javascript"> function check(f){ f.keyword1.value=""; for (var i=0; i<f.length;i++){ if(f[i].className=="food" && f[i].checked==true){ f.keyword1.value += f[i].value; } } f.keyword1.readOnly=(f.keyword1.value!=""); } </script> <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="野菜">野菜 <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="魚">魚 <input type="checkbox" class="food" name="food" onClick="check(this.form)" value="惣菜">惣菜 <input value="" size="50" type="text" name="keyword1"> </td> <td> <script language="javascript"> function check(f2){ f2.keyword2.value=""; for (var i=0; i<f2.length;i++){ if(f2[i].className=="city" && f2[i].checked==true){ f2.keyword2.value += f2[i].value; } } f2.keyword2.readOnly=(f2.keyword2.value!=""); } </script> <input type="checkbox" class="city name="city" onClick="check(this.form)" value="東京">東京 <input type="checkbox" class="city name="city" onClick="check(this.form)" value="大阪">大阪 <input type="checkbox" class="city name="city" onClick="check(this.form)" value="福岡">福岡 <input value="" size="50" type="text" name="keyword2"> </td> </form>

専門家に質問してみよう