pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

WordVBA:twitterの連続読み取りは結局、IE経由でExcelVBAでやってしまった

先日来、twitterから取得できるフォロワー数などのデータ取得に没頭しておりました。結局、ExcelVBAでIE経由で取得し連続読み取りも成功しました。WordならびにWordVBAは使いませんでした。

  1. 準備:ExcelのA列に、読み取り対象のtwitterURLを下に向かって書きこみます
  2. VBA作成:次のようなフローで行いました。
    1. ExcelのA列からURLを読み込み
    2. IEにURLを渡して、呼び出し(表示省略)
    3. ソースを取りこみ
    4. ソースから不要な文字を削除し、一見するとCSVファイルにすぐ書き出せるような数字とカンマの文字列(文字列A)にする
    5. 不要文字を削除した文字列Aは、カンマごとに決まった区切り位置に決まった種類のデータ(数字)がくる。つまり、何番目のカンマの後はフォロー数などということで、読み出しの区切りをカンマの間とか、何番目のカンマの前は何の情報、というように特定し変数に取りこむ
    6. 文字列Aから受け取った個別データの変数の内容を、呼び出しURLの右隣から順に右へ書きこむ。これを人数分繰り返し
    7. IE呼び出しが終わり、Excelへの書き込みが終わったら、Cドライブ直下へ日付時刻をファイル名として保存
  3. 実行:フォームとか面倒なので横着な方法で実行し、できあがったExcel画面をコピーするなどして二次利用する

以上のような手順でした。

twitterが米国発ということで、必要なデータを得るのが半角文字・数字・記号なので助かりました。
Wordを使わずに文字列処理ができたのは、Excelの関数・InStrが役立ちました。TAKA的にはWordに書き出して、ParagraphとかのさまざまなRangeを使った方が楽なのですが、Wordを使わずに済み、時間短縮につながったかもしれません。Excel内でも一旦セルに途中データを書き出して、などと思ったのですが、これも、変数内(メモリ内)で処理でき、時間短縮になったのかと思います。

IEの連続読み込みでエラーは発生しませんでした。ただし、回線状況とか、ページの読み込み状況などに寄るのでしょうか、アカウントによっては読み込み完了に時間がかかる例もあり、読み込みのイベントが完了するのをチェックするのは必要なことだと思いました。

さて、あとはスクリプトそのものですが…いえいえ、ご勘弁を…。昔の作り方なもので、ダラダラと長いのです。きれいでないのです。objectがうまく使えないので…苦しんでいるのです。
まあ、いつもならすぐ使う、for文の入れ子構造は最小限にしましたし、配列も二次元を使わずすみました。少しは前進もあったかと…。

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応