Excel からブラウザを開いて自動で為替データ取得する方法 -WEBスクレイピング

前回、「【Excelテクニック】ドルと円のレートを自動取得する」で金融機関のサイトから為替レートをExcelの標準機能「Webクエリ」を使い自動化する方法を紹介しましたが、今回はVBAで同じような操作を実現する方法を紹介します。

Excelの「Webクエリ」でWeb上の為替レートを自動取得する

IE操作をVBAで自動実行するメリットとは

Excelの標準機能「Webクエリ」はIEに表示されているデータを取り込むことができるものですが、VBAは取り込み以外にデータの入力、送信、繰り返し処理、定期実行などの機能が備わっており、自動化できる範囲を広げることができます。

近年企業では営業、販売、物流、経理、財務などSaaSと呼ばれるインターネット上のサービスを利用していく傾向がありますが、それだけブラウザを介する操作が増えていることを意味しています。

IE操作を自動化できる機能を豊富にそろえているVBAを使いこなすメリットはそこにあります。

IEを利用する機会が多いほど自動化のメリットが享受できるというわけです。

またVBAはWindowsのExcelがあれば動きますので、追加でアプリケーションをインストールすることは不要で、ちょっとした設定で即利用することが可能です。

今回ご紹介する為替レートの自動取得は、取り込みのみの操作となりますが、VBAのWebスクレイピングシリーズとして継続していきますので、取り込み以外の操作も順次公開したいと思います。

為替レート取得元のサイトを指定する

前回と同様に三井住友銀行の為替レートを取得しExcelの指定したセルへ書き込む処理を自動化したいと思います。

まず取得元のサイトですが、三井住友銀行の為替レートを参照します。
https://www.smbc.co.jp/ex/ExchangeServlet?ScreenID=real
※為替レートのサイトは、値がテキスト形式で表示され、表組されていればどこでもよいです。

今回のスクリプト

スクリプトは以下の通りです。

Dim objFolder

'WshShellのオブジェクトを作成する
Set objFolder = WScript.CreateObject ("Shell.Application")

'Exploreメソッドの引数にパスを指定する
objFolder.Explore "C:\Users\extan\Documents\excel"
objFolder.Explore "C:\Users\extan\Documents\outlook_temp"

Set objFolder = Nothing

実装にあたりVBScriptファイルを作成しましょう

①デスクトップに新規テキストファイルを作成します。

②適当なファイル名を入力し、拡張子を「.txt」から「.vbs」へ変更します。
警告メッセージがでましたら「はい」を押してください。

③開きたいフォルダのパスを指定します。
サンプルでは「C:\Users\extan\Documents\excel」、「C:\Users\extan\Documents\outlook_temp」が指定されていますが、適宜変更をお願いします。

④テキストファイルに上記スクリプトをコピペします。
※シート名は呼び出し先ブックに実存するものを指定してください。

VBScriptを実行する

VBScriptを実行するには作成したファイルをWクリックします。

はい!複数のフォルダが起動できました。

解説

Set objFolder = WScript.CreateObject (“Shell.Application”)
WshShellのオブジェクトを作成します。

objFolder.Explore “C:\Users\extan\Documents\excel”
objFolder.Explore “C:\Users\extan\Documents\outlook_temp”
Exploreメソッドの引数へフォルダのパスを指定します。追加すれば3件以上も可能です。

objExcel.worksheets(“Sheet1”).select
Excel起動後に開きたいシート名を指定します。

【おまけ】別の方法

WScriptオブジェクトを利用する方法で同じようにフォルダを開くことが可能です。
explorer.exeを都度実行するので上記よりは効率が悪いかもしれませんが、ご参考ください。

Dim objFolder

'WScriptのオブジェクトを作成する
Set objFolder = WScript.CreateObject("WScript.Shell")

'エクスプローラーを起動し、パスを渡す
objFolder.Run "explorer.exe /select,""C:\Users\extan\Documents\excel"""
objFolder.Run "explorer.exe /select,""C:\Users\extan\Documents\outlook_temp"""

Set objFolder = Nothing

さいごに

いかがでしょうか。

Shellオブジェクトを利用したスクリプトということで、windowsのテクニックとしては古典的な方法となりますが、オプションが豊富で今でも通用する便利な使い方がまだまだありますので、今後も載せていきたいと思います。


Warning: Invalid argument supplied for foreach() in /home/takahiro14/extan.jp/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(469) : eval()'d code on line 10

Warning: mt_rand(): max(-1) is smaller than min(0) in /home/takahiro14/extan.jp/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(469) : eval()'d code on line 14







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です