見出し画像

【お手軽カンタン自動化!エクセルVBA × IEで身代わりロボットを作る最短8ステップ】~その6~ IF分岐

みなさんこんにちは。taka.(@teihen_escape)です。

前回はループ処理(繰り返し処理)について紹介しました。
値を変えつつ同じ操作を何十、何百回と繰り返せるようになったことで、効率化の幅も圧倒的に広がったことと思います。

今回はさらにやれることを増やすために、IF処理(条件分岐)について解説します。関数で既に使いこないしているという方も多いのではないかと思うので、その場合はイメージはしやすいのではないでしょうか。

なお、今回も前回までのコードに付け足す形で説明しますが、それにともなって処理も少しプラスしています。

具体的には、今までは単純に複数の検索ワードをヤフーで検索するだけでしたが、今回は

検索した後に検索結果数をB列のセルに抜き出し、
さらにその数が一億以上だった場合に特定の文言をC列のセルに書き出す。


としています。

実際のコード

Sub yahoo検索()

Dim objIE As InternetExplorer
Dim i As Long

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
   
i = 1
Do Until Cells(i, 1) = ""
   
   objIE.navigate "https://search.yahoo.co.jp/"
   
   Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
       DoEvents
   Loop

   '検索窓に入力後、検索ボタンをクリック
   objIE.Document.getElementById("yschsp").Value = Cells(i, 1)
   objIE.Document.getElementsByClassName("b")(0).Click

   Application.Wait Now + TimeValue("00:00:03")
   
   Cells(i, 2) = objIE.Document.getElementsByClassName("util-Text--bold")(0).innerText
   
   If Cells(i, 2) >= 100000000 Then
   
       Cells(i, 3) = "検索結果一億以上"
   
   End If
   
i = i + 1
Loop

objIE.Quit
Set objIE = Nothing

MsgBox "完了しました"

End Sub

付け加えられているのは以下の4行です。

Cells(i, 2) = objIE.Document.getElementsByClassName("util-Text--bold")(0).innerText

If Cells(i, 2) >= 100000000 Then
    Cells(i, 3) = "検索結果数一億以上"
End If

解説

まず一行目の

Cells(i, 2) = objIE.Document.getElementsByClassName("util-Text--bold")(0).innerText

についてですが、左辺のCells(i, 2)は既に学んだ通りB列の任意のセルを意味します。
右辺については検索結果のページから検索結果数を抜いてくる命令なんですが、これについての説明は次回やりますので今回は割愛します。

そして二行目以降ですが、IFの基本的な構文は

If 条件 then
 操作
End If


というもので、今回でいうと、
「B列の任意のセルの値が一億以上のとき(条件)、C列の任意のセルに検索結果数一億以上と入力する(操作)」
ということを表しています。

ちなみに今回は敢えて入れていませんが、条件を満たさない場合の操作を入れたい場合は

If 条件 then
 操作
Else
 操作
End If

といった具合にElseを使えばいけますし、それが複数ある場合は、

If 条件1 then
 操作
Elseif 条件2 then
 操作
Elseif 条件3 then
 操作
Else
 操作
End If

とった形にすれば対応できます。
このあたりはそれほどややこしいこともないので、さくりと覚えてしまってください。

一応、出力された結果を確認してみると、

画像1

こんな具合に、無事に結果として反映されていることが分かりますね。


と、いうわけで、今回は少し短いですが、場合分けが生まれる処理をさせる上で欠かせない、IFを使った条件分岐について解説しました。

これを使えば、かなり複雑な処理をするコードも組むことができるようになると思いますので、是非モノにしてくださいね。

***

さて、いよいよあと二回でこの講座も終わりになりますが、残り二回は今まで説明を避けてきた「DOM操作」について解説します。
VBAでIE操作をするにあたり、ある意味最大の難関といってもいいこの概念ですが、がんばって学んでいきましょう。

それでは、本日も最後まで読んで頂き有難うございました^^/

【お手軽カンタン自動化!エクセルVBA × IEで身代わりロボットを作る最短8ステップ】

0、 なぜVBA×IEなのか
1、 参照設定
2、最小限の型を覚えよう
3、型を使いやすく改良しよう
4、 IEの表示待ち
5、 ループ処理
6、 IF分岐 ←←←←←←←←←← イマココ
7、 DOM操作その一
8、 DOM操作その二

この記事が気に入ったらサポートをしてみませんか?