ie-excel

エクセル・マクロでie操作

Excel VBAでIEを操作 ラジオボタンやチェックボックスを選択

2016/10/17

Excelでアンカーをたどり、リンクしていく方法。
検索キーワードを入れて検索する方法。
該当ページにセレクトタグ(プルダウンのメニュー)があった場合の選択する方法を例示してきました。

今回は、ラジオボタンやチェックボックスの操作方法を例示します。

そこで今回のお題は
・ラジオボタンやチェックボックスのあるサイトを表示
・ラジオボタンを選択し、チェックボックスにチェックする
を実践。

上記お題は、以下の操作をすることにより可能となります。
・エクセルを起動
・(バージョンによっては)マクロを有効にする
・マクロの編集画面で、以下のコードをコピー&ペースト
・マクロを実行

コピペするコード

Dim ObjIE As Object  '変数を定義
Dim Obj As Object    '変数を定義

'Sleepを使用する場合のお約束
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub IE_open()

  Set ObjIE = CreateObject("InternetExplorer.Application")  'IEを開く際のお約束
  ObjIE.Visible = True                                      'IEを開く際のお約束
  ObjIE.Navigate "http://www.yahoo.co.jp"                   '開きたいサイトのURLを指定

  Sleep (1000)                                              '1秒間待つ
  
  Do While ObjIE.ReadyState <> 4                            'サイトが開かれるまで待つ(お約束)
    Do While ObjIE.Busy = True                              'サイトが開かれるまで待つ(お約束)
    Loop
  Loop

  For Each Obj In ObjIE.Document.getElementsByTagName("input")
                                                            
      If Obj.Type = "radio" and Obj.value = "special2" Then 'ラジオボタンかつvalueに設定されていた値が「special2」の場合、以下の処理を実行
         Obj.Click                                          'ラジオボタンをクリック
'         Obj.Checked = True                                '(コメントアウトしています)上記とは異なり、先の方法でもラジオボタンを選択可能
      End If

      If Obj.Type = "checkbox" and Obj.value = "test2"  Then 'チェックボックスかつvalueに設定されていた値が「test2」の場合、以下の処理を実行
         Obj.Click                                           'チェックボックスをクリック
'         Obj.Checked = True                                '(コメントアウトしています)上記とは異なり、先の方法でもラジオボタンを選択可能
      End If

  Next                                                      '次のタグを処理

End Sub


サンプルのサイトが表示され、ラジオボタン、チェックボックスそれぞれが選択されていませんか?

ではソースの解説です。
青字箇所は以前説明済みのために、赤字箇所に絞って記載します。

      If Obj.Type = "radio" and Obj.value = "special2" Then
         Obj.Click
      End If

ラジオボタンをONしたい場所を選び、ラジオボタンをクリックしています。
ブラウザでの通常操作も、クリックでラジオボタンを選択します。
そのため、アンカーボタンなどと同様に「Click」でラジオボタンが選択できます。

なお、当該命令を以下の通り変更いただいても同じく機能します。

      Obj.Checked = True

ラジオボタンがクリックされると、「Checked」がFlaseからTrueに変わります。
そのため、上記のとおり「Checked」をTrueに変更すれば、該当のラジオボタンが選択されることとなります。
ただし、「Click」しているわけではありません。
そのため「onClick」などが設定されていた場合はこの命令だと、onClickイベントは発生しません。
別途発生させる必要がありますので、注意ください。
そのためにも、前者「Click」を使う方をおすすめいたします。

次のコードです。

      If Obj.Type = "checkbox" and Obj.value = "test2"  Then
        Obj.Click
      End If

チェックボックスを検索し、ONしたいチェックボックスを選び、チェックボックスをクリックしています。
これもブラウザでの通常操作も、クリックでチェックボックスを選択します。
そのため、アンカーボタンなどと同様に「Click」でラジオボタンが選択できます。
また、再度「Click」すれば、チェックボックスは解除されます。

なお、ラジオボタン同様に当該命令を以下の通り変更いただいても同じく機能します。

      Obj.Checked = True

注意事項などはラジオボタン同様ですので割愛します。
念のためですが、おすすめは「Click」を使う方となります

今回のポイントの整理です。
・ラジオボタンのONにする場合、「Click」命令を実行
・チェックボックスをONにする場合も、「Click」命令を実行
チェックボックスがONになっている場合、再度「Click」するとチェックボックスはオフになる
・selected=trueでもラジオボタンやチェックボックスを選択可能(ただし、onClickが設定されていた場合、onClickは機能しません)
といった3点がポイントです。

-ExcelでIE操作