こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル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>

投稿日時 - 2012-05-24 23:18:36

QNo.7494473

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.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

投稿日時 - 2012-07-01 22:41:34

ANo.3

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

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

投稿日時 - 2012-05-26 23:36:28

お礼

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

投稿日時 - 2012-05-28 12:31:22

ANo.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


いかがでしょうか。
私でもここまで調べられたのですから、質問者さまも
がんばってくださいね。

投稿日時 - 2012-05-26 23:34:48

お礼

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

投稿日時 - 2012-05-28 12:30:26

ANo.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上のチェックボックスにセットし、
該当ページに送る。

不明点があればお問い合わせください。

投稿日時 - 2012-05-25 11:38:39

お礼

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

投稿日時 - 2012-05-26 07:51:30

あなたにオススメの質問