- 締切済み
エクセル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>
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- DOUGLAS_
- ベストアンサー率74% (397/534)
#まだ閉店前でしょうか? 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)
#1、#2です。 すみません、参考URLをつけるのを忘れました。。。 こちらを参照してみてください。
- nao-y
- ベストアンサー率58% (111/190)
> 自分も一番分からないところが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 いかがでしょうか。 私でもここまで調べられたのですから、質問者さまも がんばってくださいね。
お礼
んー分かると言うか、前に作った他のマクロを引用すれば出来るかな~と思う程度だったんで一応まとめて質問させて頂きました。 ご回答ありがとうございました。私もイロイロ調べます。
- nao-y
- ベストアンサー率58% (111/190)
私は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上のチェックボックスにセットし、 該当ページに送る。 不明点があればお問い合わせください。
お礼
自分も一番分からないところがVBAからWebページを操作のところなんですよね~。clickとか空欄に文字を入れたりなら出来るんですが、任意の文字列を探してチェックを入れるのがわからない、、 まぁまだいろいろ試してみます。
お礼
たびたびありがとうございます