pagetaka

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

WordVBA:twitter連続読み込みをIE経由で実行するも…

先だって、twitterのソースを連続してMSXML.XMLHTTPRequest で実行・取得する際に発生していたエラー問題解決できていません。

で、数日、悩んだふりをしておりました。苦しんだ結果、横着を決め込むことにしました。つまり、次のような目論見です。

  • twitterアカウントのソースの連続読み込みに成功することは必須
  • ソースを取得してから、必要な情報を取りだすところは(ソースは汚いが)なんとかできている
  • 結果をExcelに書き出すことも問題ない
  • ならば、MSXML.XMLHTTPRequest にこだわらず、IE経由でもOKではないか…

ということで、安易にやってみました。twitterアカウントの連続表示については、指定数がある程度までOKみたいです。しかし、変数に入っているはずのアカウントXが表示されるのではなく、そのまえのWが表示され、結果的に不十分。連続読み込みそのものはできているようなのに…。
読み込みが不完全なのではないか、IEとのタイミングがVBAでうまくとれていないのではないか…などと妄想し、Excelのタイマーを挟んでみました。

Sub exlINTV()
Dim exl As Excel.Application
Set exl = CreateObject("excel.application")
exl.Application.Wait Now + TimeValue("00:00:15")
End Sub

上のソースは、15秒待って次の作業へ、というようなことになるのですが、それでもうまくいきません。で、Sub exlINTV() にジャンプするソース位置をイロイロ変えてみました。
その結果、WordVBAでIEのドキュメントが読み込み完了となるのをチェックしている後、つまり、VBA的には読み込みができている、という返答をしているはずのそのあとにさらに、待ち時間15秒を設けたら、読み込みがなんとかWなどもなくできるようになりました。
この15秒が適当なのかどうなのかは不明です。
ネット環境、PCのヒート具合などさまざまにからみあって、時にはOK、時にはNGなことになるのではないかと思います。

twitterに蹴られていたのか、Windowsに蹴られていたのかは不明かも…

さて、MSXML.XMLHTTPRequestで実現しようとしていた、twitterの連続読み込み、そのうち、拒否されるまでのルーチン数が3、とか最悪1でも発生するようになりました。

上記リンクなどをはじめイロイロ見ていくと、

マイクロソフトは、サーバーサイド ソリューション開発の必要がある開発者には、Office のオートメーションの代替策を探すことを強くお勧めします。Office の設計には制約があるため、Office の設定に変更を加えてもすべての問題を解決するには不十分です。マイクロソフトは、サーバーサイドに Office をインストールする必要がなく、オートメーションより効率よく迅速に共通のほとんどのタスクを実行できるいくつかの代替策を強くお勧めします。Office をサーバーサイド コンポーネントとしてプロジェクトに含める前に、代替策について検討してください。 >> 全文

あ~、そりゃそうだな~と思いました。つまり、VBAは本来、Office製品に対応するようつくられているのですが、結果的に範囲を超えて作業できることから、問題点も内包するということか…と。なので、MSXML.XMLHTTPRequestVBAから一生懸命使うような方法は、コントロールを受ける、というようなことになるのでしょうね。なので、twitterにアクセスを拒否されたのか、そうでないのかは、検証方法を知らない爺にはわからないことと…シクシク。本当は、これがストライクなアドバイスなのかどうかさえ、爺にはわからない…びぇ~ん。
それなら、VBAとは親和性が多少でも高いだろうIEに仲介させ、ソースを得ようという安直な考えに改めたのでした。
VB本体とか、ASPとか使うときっと解決できるんでしょうね…。職業訓練所でやったきりだな~逃避…スタコラ…。

ExcelVBAの出番かな~

というようなことで、イロイロいじっているうちに、ExcelVBAを使った方が楽みたい、と思い始めました。結果をExcelに書き出すのなら、twitterのリストもExcelでつくって…などと。問題は、段落(Paragraph)などの概念が無い代わりを何にさせるか、それともExcel側からWordを使って結果だけを引き込むということにするか…さて…さて。