MS Access Tips/Sample and VBA and Blog customize etc...

RSSフィードを読み込むクラスモジュール

VBAでRSSリーダーを作ってみました。

当ブログのリンクリストはいままでBlogPeopleのブログパーツを使っていたのですが、更新順に並べ替えられて内容をポップアップ表示されて便利なのですが、これが結構重いし更新がすぐ反映されてないようなので、自前で作ってやろうと思い立ったのがきっかけです。

で、RSSフィードを読み込んでリンクリストのHTMLを自動生成してブログにアップするという処理を、VBAで作成して、タスクスケジューラーで定期的に実行することにしました。

こんな変態的なことを考えるのはhatenaぐらいでしょう。ただ、RSSリーダーは他にも需要があるかもということで紹介します。

VBAクラスモジュールでRSSリーダー

難易度:

方針検討

RSSフィードは、Microsoft XML ライブラリを使用して取得できます。検索すればサンプルコードはいろいろ見つかります。

ExcelマクロでXMLを読み込む方法(RSSを読み込む場合を例に) - ウィリアムのいたずらの開発日記

取得したRSSのアイテムのデータ(更新日時、タイトル、要約、リンクURL)をユーザー定義型にまとめます。

この複数のアイテムをどこに格納するかですが、動的配列 か Collection でしょう。
Collection の方が扱いが楽なのでそれで行こうかと思ったのですが、ユーザー定義型を Collection にAddすると

コンパイルエラー:
パブリックオブジェクトモジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。

という意味不明なエラーが出てしまいます。どうやらクラスモジュールでないとだめらしい。

ということで、アイテム(更新日時、タイトル、要約、リンクURL)をクラスモジュールで定義することにしよう。なら、複数アイテムを格納する Collection もクラスモジュールで定義しちゃえばより扱いやすくなるだろうということになりました。

クラスモジュール

VBEのメニュー[ツール]-[参照設定]で、Microsoft XML ライブラリにチェックを入れておきます。

参照設定-Microsoft_XML

下記の3つのクラスモジュールを作成します。

RSSアイテムを格納するクラス

クラスモジュール RSSItem

複数のRSSアイテムをCollectionに格納するクラス

クラスモジュール RSSItemList

RSSの仕様などは厳密に調査していないので、適当です。一応、ブログのリンクリストのRSSは読み込まれているようです。

使用例

下記は、このブログのRSSデータを5件、イミディエイトウィンドウへ出力する例です。

イミディエイト出力結果

Accessならテーブルに書き出したり、Excelならワークシート上に出力するなり用途に応じて利用してください。

当ブログのリンクリストは、これを利用してテーブルに書きだして、それを元にHTMLファイルを生成して、アップロードしています。

リンクリスト


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/409-eeb353e5
該当の記事は見つかりませんでした。