EXCEL VBA InternetExplorerの操作 住所から最寄り駅を検索する・自動収集(テクニック)

 

EXCEL VBA InternetExplorerの操作 住所から最寄り駅を検索する・自動収集(テクニック)

 

 

●はじめに
今回説明するプログラムは、InternetExplorerとVBAを組み合わせたサンプルプログラムになります。インターネットサイトでは、様々な情報を収集する事が出来ます。例えば旅行先を調べたり、好きな趣味の内容を調べたり、また、物の値段を調べたりする事も出来ます。今回のサンプルプログラムでは、インターネットの地図サイト(Yahoo!地図)を利用して、住所情報を入力して検索結果を元に最寄り駅情報を入手します。調べる情報の件数が1~3件程度なら、自分自身で手入力で調べれば良いと思いますが、そでが100件を超える場合、時間も掛かりますし手間も掛かります。社内の人事情報等で、個人の住所から該当する最寄り駅を探す場合に利用出来ると思います。それでは、順番に説明いたします。

※注意:下記のプログラムは、現在、正常に動作いたしません。解決次第に更新いたします。上記のGoogle Chromeバージョンは動作いたします。

 

 

 

●プログラム説明

下記のプログラムは、InternetExplorerとVBAを組み合わせて、住所データから最寄り駅を検索するサンプルプログラムです。EXCELシートに住所の一覧を作成して、その住所データを元に、WebサイトのYahoo!地図を利用して最寄り駅検索を行い、最寄り駅の3か所データをEXCELシートに転記します。

【プログラム内容】

①【住所の一覧データから最寄り駅を検索します】(3駅)

②Webサイト【Yahoo!地図】から最寄り駅を検索します。

 

 

'
'******** AKIRA55.COM ******* https://akira55.com//Nearest_station/
'

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Sub Nearest_station01() '指定した最寄り駅検索を行います。
    
    Dim IE As Object
    Dim My_Add() As String
    Dim I, L, lRow As Long
    Dim Txt_Data(6), Button As Object

    
    lRow = Cells(Rows.Count, "C").End(xlUp).Row  'C列(住所)の最終行を取得
        
    For I = 3 To lRow '3行目から最終行までループします。
   
        ReDim Preserve My_Add(I) As String  '既存データを保持したまま要素数を変更します。
        My_Add(I) = Cells(I, "C").Text
        
       
        Set IE = CreateObject("InternetExplorer.application")
        IE.Visible = True   'InternetExplorerを立ち上げる。
        IE.navigate ("https://map.yahoo.co.jp/maps")  'YahooMapを開きます。
        
        Do While IE.Busy Or IE.readystate < readystate_complete  'Webページが表示されるまで待ちます。
                DoEvents
                Sleep 1
        Loop
        Sleep 2000
    
        Set Txt_Data(0) = IE.document.getElementByid("yschsp")
        Txt_Data(0).innertext = My_Add(I)    '住所データを入力します。
        
        Set Button = IE.document.getElementByid("search")
        Button.Click    '検索ボタンをクリックします。
        
        Do While IE.Busy Or IE.readystate < readystate_complete  '検索結果のWebページが表示されるまで待ちます。
                DoEvents
                Sleep 1
        Loop
        Sleep 2000
    

        On Error Resume Next ' エラー回避
        
        Set Txt_Data(1) = IE.document.getElementsByClassName("stationname")(0) '一番目に近い駅名を取得します。
        Set Txt_Data(2) = Txt_Data(1).parentElement.getElementsByTagName("span")(0) '一番名に近い駅からの徒歩時間を取得します。
        Set Txt_Data(3) = IE.document.getElementsByClassName("stationname")(1) '二番目に近い駅名を取得します。
        Set Txt_Data(4) = Txt_Data(3).parentElement.getElementsByTagName("span")(0) '二番名に近い駅からの徒歩時間を取得します。
        Set Txt_Data(5) = IE.document.getElementsByClassName("stationname")(2) '三番目に近い駅名を取得します。
        Set Txt_Data(6) = Txt_Data(5).parentElement.getElementsByTagName("span")(0) '三番名に近い駅からの徒歩時間を取得します。
    
        For L = 1 To 6 '配列データ1~6を繰り返す
            Cells(I, L + 3) = Txt_Data(L).innertext 'Webページから取得したデータをセルへ出力します。
        Next L
  
        On Error GoTo 0   ' エラー回避
    
        IE.Quit  'InternetExplorerを閉じる
        
    Next I
    
    MsgBox "最寄り駅検索が終了しました。"
    
    
End Sub
'

 

 

●実行前~実行後 ※プログラム実行後、EXCELシートに登録されている【住所:C列】情報からWebサイト「Yahoo!地図」に検索を行い、最寄り駅が表示され、EXCELシートに結果を転記されました。今回は、都道府県庁の住所を元に最寄り駅を検索しました。

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA