昔独学でvbaスクレイピングをした事

webスクレイピングと言う技術を知っていますか。スクレイピングと言うのは、プログラムを組んでウェブページの必要な部分(箇所)のみを次々と自分のパソコン内にコピペしていく技術のことです。

私はプログラミングの本格的な講座は受けたことがないのです。しかし、いろいろな本を読み漁って結局VBAだけは1番簡単だし何とかそれなりにしたいことができるかな?と言うレベルまで上達することができました。(昔集中的にやっていたことなので、今は本を見たら思い出すと言う程度ですが)

そして、その集大成として自分が到達できたかな?と思う技術は、スクレイピングだったわけです。(しかもexcel2003使用)

具体的に言ってみると、例えばウィキペディアには野球選手の一人ひとりの詳細な情報が載っていますね。最初に選手名が書いてあって、目次と言う項目があって、「経歴」や、「選手としての特徴・人物」と言う項目の次ぐらいに、必ず"どの"選手にも「年度別成績」と言う、表のような形式の項目があります。

そこの表の部分だけを、昔から現在の選手に至るまで抜き出せたら、かなりVBAの技術としては到達点かなと考えたわけです。

このスクレイピングを習得したならば、野球選手の情報だけでなく、各地の気象観測台の年間データなども、自動的に一気にExcelのシートなどにコピペしていけるわけです。(そして実際に気象データも取得することに成功しました)

 

と言うことで、自分のVBA技術の1つの到達点として(洗練されたコードではないかもしれないが)一応自作コードを載せておきます。

ちなみに動作していたのはExcelの2003年度版のバージョンなので、今のExcelのバージョンでできるかどうかは不明です。

ではいかにコード画像を載せます。

f:id:primeno:20191219075519j:image
f:id:primeno:20191219075515j:image

ちょっとかすれて醜いところがあるかもしれないが、ご容赦ください。しかも不要なコメントもそのまま消さずにしています。

 

そして、ほとんどすべての選手をスクレイピングしたのですが、代表選手として、松井秀喜選手の部分を載せます。

f:id:primeno:20191219075811j:image
f:id:primeno:20191219075807j:image

 

個人的にVBAファンクションでかなり有効性が高い関数は、

current region 、used range、offset、redim

などでした。

※ちなみにVBAの紛らわしいところは、関数とメソッドの違いです。有名なところでは、msgboxとかですかね?

f:id:primeno:20191219081422j:image

メソッドは関数の十分条件

関数はメソッドの必要条件

 

VBAプログラマーからすると軽く見られがちですが僕はなかなか好きな方ですね。