<スポンサーリンク>

【簡単】VBAでIEのテキストボックスに値を入力する方法~VBA(マクロ)でIE操作

IE関係
この記事は約11分で読めます。
コピーボタン
記事のタイトルと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に張り付けて実行してみてください。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
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」

テキストボックスの TagName は「INPUT」ですので、サイトを表示させた後、
For Each A In objIE.document.getElementsByTagName("INPUT") ~~~ Next
でINPUTの要素をすべて検索し、抜き出した結果をエクセルに書き出していっています。

入力したい要素を確認( テキストボックスはType「text」)

マクロを実行すると、 下記のようなTagNameがINPUTの一覧表ができたと思います。
その中でも今回は、テキストボックスに入力したいので、Type(c列)がtextのものを探します。
今回はNo3が検索欄に当たり、Nameが"q"であることが分かりました。

テキストボックスに入力してみる。

上記のプログラムより、テキストボックスの要素を見つけることができました。
この要素のデータを用いて、今度は文字を入力していきたいと思います。
やることは簡単、先ほどと同じ要領で、
①FOR EACH でINPUTをすべて抜き出す。
IF分で入力したい要素を見つける。→今回はNameが"q"
.valueで値を入力する。→.value="test"
となっております。
ダブルクリックでコピーできますのでVBAに張り付けて実行してみてください。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub IE_textINPUT()
    
'*****↓ここまでは以前と一緒***************************************************
'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      '値がないとエラーが出るので、エラー回避用
       
     Dim A As Object
        
    For Each A In objIE.document.getElementsByTagName("INPUT")'①FOR EACH でINPUTをすべて抜き出す。
       
        If A.Name = "q" Then A.VALUE="テスト"'②IF分で入力したい要素を見つけて③valueで代入。
        
    Next
       
    On Error GoTo 0
   
End Sub

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

また、単純に<INPUT>の3番目でもありますので、単純に、
objIE.document.getElementsByTagName("INPUT")(3).value="テスト"
と入力することで、文字を入力することができます。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub IE_textINPUT2()
   
 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      '値がないとエラーが出るので、エラー回避用
         
    objIE.document.getElementsByTagName("INPUT")(3).value="テスト"
 
End Sub

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

コメント欄

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