<スポンサーリンク>

【簡単】VBAでIEのボタンをクリックする方法~VBA(マクロ)でIE操作

IE関係
この記事は約10分で読めます。
コピーボタン
記事のタイトルとURLをコピー
<スポンサーリンク>

↓のサイトで、IEを表示、要素を抜き出すことができました。
次は、ボタンをすべて確認し、任意のボタンをクリックする方法を説明します。

【簡単】VBAでIEの任意のサイトを表示させる方法~VBA(マクロ)でIE操作
VBAでIEを操作する方法はネットを検索しても、まだ確立されきっていないように感じますので、素人が学びながら、そこまで深堀せずに簡単に説明していきたいと思います。 VBAでIEの任意のサイトを表示させる方法 VBAの入門編として、まずIEの...
【簡単】VBAでIEの全要素のデータを取得する方法~VBA(マクロ)でIE操作
↓改良版です。こちら速度向上させましたので、こちらをご覧ください。 ↓のサイトで、IEを表示することができました。次は、HTMLの中身を確認し、任意の情報を取り出す方法を書いていこうと思います。 VBAでIEの全要素のデータを取得する方法 ...
スポンサーリンク

VBAでIEのボタンをクリックする方法~VBA(マクロ)でIE操作

今回は、VBAでIEのボタンをクリックする方法を紹介したいと思います。
まず、サイト内のインプット要素の一覧を見てみましょう。
下記コードは「グーグルの検索サイト」の全てのインプット要素をエクセルに書き出すコードです。
ダブルクリックでコピーできますのでとりあえずVBAに張り付けて実行してみてください。

Sub IEinput()
   
 Application.ScreenUpdating = False
    
'IEの起動
Dim objIE As Object
    
Set objIE = GetObject("", "InternetExplorer.Application")
    
objIE.Visible = True
        
        
    objIE.Navigate "https://www.google.com/?hl=ja"  ' このURLを任意に変更
        
    ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend
    
    On Error Resume Next      '値がないとエラーが出るので、エラー回避用
   
    I = 1  '開始行を指定
    J = objIE.document.all.Length  '要素の数を知る
       
    Cells(I, 1).Value = "No"
    Cells(I, 2).Value = "tagname"
    Cells(I, 3).Value = "Type"
    Cells(I, 4).Value = "NAME"
    Cells(I, 5).Value = "ID"
    Cells(I, 6).Value = "className"
    Cells(I, 7).Value = "TABINDEX"
    Cells(I, 8).Value = "Vakue"
    Cells(I, 9).Value = "checked"
    Cells(I, 10).Value = "親のtagname"
    Cells(I, 11).Value = "innertext"
    Cells(I, 12).Value = "outertext"
    Cells(I, 13).Value = "outherhtml"
    Cells(I, 14).Value = "innerhtml"
    Cells(I, 15).Value = "リンク先"
     
       
     Dim A As Object
        
    For Each A In objIE.document.getElementsByTagName("INPUT")
       
       
  
        Cells(I + 1, 1) = I - 1                     '個数
        Cells(I + 1, 2) = A.TAGNAME                 'TAGネーム
        Cells(I + 1, 3) = A.Type                    'タイプ ※selectボックスは”select-one”と取得
        Cells(I + 1, 4) = A.Name                    '名前
        Cells(I + 1, 5) = A.ID                      'ID
        Cells(I + 1, 6) = A.className               'クラス名
        Cells(I + 1, 7) = A.TabIndex                'フォーカス順序 (Tabでの移動順)
        Cells(I + 1, 8) = A.Value                   '値
        Cells(I + 1, 9) = A.Checked                 'チェック状態 (True = チェック有り、false = チェック無し)
                                                    'checkboxやradioボタンから取得します
        Cells(I + 1, 10) = A.parentElement.TAGNAME  '親のTAG
   
   
   
        If Len(A.innerHTML) > 50 Then
           
            Cells(I + 1, 11) = Left(A.innertext, 10) & "   ~~~   " & Right(A.innertext, 10)
            Cells(I + 1, 12) = Left(A.outertext, 10) & "   ~~~   " & Right(A.outerrext, 10)
            Cells(I + 1, 13) = Left(A.outerHTML, 10) & "   ~~~   " & Right(A.outerHTML, 10)
            Cells(I + 1, 14) = Left(A.innerHTML, 10) & "   ~~~   " & Right(A.innerHTML, 10)
   
        Else
           
            Cells(I + 1, 11) = A.innertext
            Cells(I + 1, 12) = A.outertext
            Cells(I + 1, 13) = A.outerHTML
            Cells(I + 1, 14) = A.innerHTML
                       
        End If
         
          
        I = I + 1
           
        'ステータスバーに進捗を表示
        Application.StatusBar = I & "/" & J
        
    Next
       
    On Error GoTo 0
 
    Cells.WrapText = False
   
   
Application.ScreenUpdating = True
Application.StatusBar = False
   
Range(Cells(1, 1), Cells(1, 14)).EntireColumn.AutoFit
Range(Cells(1, 2), Cells(1, 2)).EntireColumn.Interior.ColorIndex = 6
Range(Cells(1, 4), Cells(1, 4)).EntireColumn.Interior.ColorIndex = 6
Range(Cells(1, 8), Cells(1, 8)).EntireColumn.Interior.ColorIndex = 6
    
    
End Sub

簡単にプログラム説明

ボタンのTagNameは「INPUT」 TYPE「submit」 か「BUTTON」

ボタンの TagName は「INPUT」か「BUTTON」ですが、
googleでは「INPUT」を用いているようですので、
サイトを表示させた後、
For Each A In objIE.document.getElementsByTagName(“INPUT“) ~~~ Next
で「INPUT」の要素をすべて検索し、
抜き出した要素からデータをエクセルに書き出していっています。

これで、 TagNameがINPUTの一覧表ができたと思います。
その中でも今回は「Google 検索」ボタンをクリックしたいので、
Type(c列)がsubmit、valueが「Google 検索」 のものを探します。
結果、No4が探している「Google 検索」ボタンになり、
ボタンのNameが"btnK"であることが分かりました

ボタンをクリックする。

全てのinputを抜き出し、入力したい要素を見つけることができました。
次はこの要素の内容を用いて、今度はボタンをクリックしていきたいと思います。
やることは簡単、先ほどと同じ要領で、
①FOR EACH でINPUTをすべて抜き出す。
IF文で入力したい要素を見つける。→今回は.Nameが"btnk" or Valueが”Google 検索”
.clickでボタンを押す
となっております。
ダブルクリックでコピーできますのでVBAに張り付けて実行してみてください。

Sub IE_buttonCLICK()
   

'IEの起動
Dim objIE As Object
   
Set objIE = GetObject("", "InternetExplorer.Application")
   
objIE.Visible = True
       
       
    objIE.Navigate "https://www.google.com/?hl=ja"  ' このURLを任意に変更
       
    ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend
   
    On Error Resume Next      '値がないとエラーが出るので、エラー回避用

    objIE.document.getElementsByTagName("INPUT")(3).Value = "nujonoa_blog" 'テキスト欄に入力
      
    Dim A As Object
       
    For Each A In objIE.document.getElementsByTagName("INPUT") '①FOR EACH でINPUTをすべて抜き出す。
      
        If A.Name = "btnK" Then A.Click '②IF分で入力したい要素を見つけて ③Click
       
    Next
      
    On Error GoTo 0
  
End Sub

ほかのやり方でテキストボックスに入力してみる。

また、単純に<INPUT>の4番目でもありますので、単純に、
objIE.document.getElementsByTagName("INPUT")(4).Click
と入力することで、クリックすることもできます。

Sub IE_buttonCLICK2()

'IEの起動
Dim objIE As Object
   
Set objIE = GetObject("", "InternetExplorer.Application")
   
objIE.Visible = True
       
       
    objIE.Navigate "https://www.google.com/?hl=ja"  ' このURLを任意に変更
       
    ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend
   
    objIE.document.getElementsByTagName("INPUT")(3).value="nujonoa_blog"
    objIE.document.getElementsByTagName("INPUT")(4).Click

End Sub

その他、VBAでIEを動かすために必要な情報をまとめています!!

コメント欄

  1. We're a group of volunteers and starting a new scheme in our community.

    Your site offered us with valuable info to work on. You have done an impressive job and our whole community will be
    grateful to you.

  2. This design is incredible! You obviously know how
    to keep a reader entertained. Between your wit and your videos, I
    was almost moved to start my own blog (well, almost...HaHa!)
    Excellent job. I really enjoyed what you had
    to say, and more than that, how you presented it.
    Too cool!

  3. Hello! Do you know if they make any plugins to protect against hackers?
    I'm kinda paranoid about losing everything I've worked
    hard on. Any tips?

  4. Great work! This is the type of info that are meant to be shared around the internet.
    Disgrace on the seek engines for no longer positioning this
    submit upper! Come on over and consult with my web
    site . Thanks =)

  5. I seriously love your site.. Excellent colors & theme.
    Did you make this web site yourself? Please reply back as I'm attempting to create my own personal blog and want to learn where you got this from or
    exactly what the theme is called. Thanks!

  6. Its like you read my mind! You appear to know a lot about
    this, like you wrote the book in it or something. I think that you could do with a few
    pics to drive the message home a bit, but instead of that, this is magnificent blog.
    A fantastic read. I'll certainly be back.

  7. I appreciate, cause I found just what I was taking a look for.
    You've ended my four day long hunt! God Bless you man. Have a nice day.
    Bye

  8. Thanks for finally writing about > 【簡単】VBAでIEのボタンをクリックする方法~VBA(マクロ)でIE操作 | nujonoa_blog < Loved it!

  9. I read this paragraph completely concerning the comparison of newest and
    earlier technologies, it's awesome article.

  10. Woah! I'm really digging the template/theme of this blog.

    It's simple, yet effective. A lot of times it's challenging to get that "perfect balance" between superb usability and visual appearance.

    I must say that you've done a fantastic job with
    this. Also, the blog loads very quick for me on Internet explorer.

    Superb Blog!

  11. This is my first time visit at here and i am genuinely pleassant to read all at one place.

  12. Hi my family member! I wish to say that this article is
    awesome, great written and come with almost all important infos.
    I would like to see extra posts like this .

  13. Hi there it's me, I am also visiting this web page regularly, this web site
    is really good and the viewers are actually sharing pleasant thoughts.

  14. Your means of describing everything in this piece of writing is
    in fact nice, every one can easily understand it, Thanks a
    lot.

  15. Hi! I simply wish to offer you a big thumbs up for the great
    information you have got here on this post. I am returning to your web site for more soon.

  16. I like the valuable information you provide in your articles.
    I will bookmark your weblog and check again here
    regularly. I'm quite certain I'll learn plenty of new stuff
    right here! Best of luck for the next!

  17. Just wish to say your article is as amazing.
    The clarity in your post is simply cool and i can assume you are an expert on this subject.
    Fine with your permission allow me to grab your feed to keep
    updated with forthcoming post. Thanks a million and please carry
    on the rewarding work.

  18. Simply desire to say your article is as astounding. The clearness
    to your submit is just great and that i could suppose
    you're a professional in this subject. Well with your permission let me
    to snatch your feed to stay up to date with impending post.
    Thanks 1,000,000 and please continue the gratifying work.

  19. I think this is among the most significant information for me.

    And i'm glad reading your article. But should remark on few general
    things, The website style is great, the articles is really excellent
    : D. Good job, cheers

<スポンサーリンク>
タイトルとURLをコピーしました