コマンドボタンにVBAを対応付ける

ワークシートに戻り、コマンドボタンをクリックした時のコードを記述します。 任意のセルをクリックしてオブジェクトの選択状態が解除されていることを確認し、[開発]タブの[デザインモード]をONの状態で、コマンドボタンcbSearchをダブルクリックすると、VBエディタが開きます。

この中に以下のコードを記述します。先述したsearchMovieプロシージャを呼び出すだけです。引数startには1をセットします

[リスト3][検索する]ボタンをクリックした時のコード

Private Sub cbSearch_Click()
    Call searchMovie(1)
End Sub

同様に、コマンドボタンcbNextをダブルクリックして、以下のコードを記述します。今度は、開始番号に1ページ分の行数(25行)を加えたものを、引数startに渡します。

[リスト4][次の25件]ボタンをクリックした時のコード

Private Sub cbNext_Click()
    Call searchMovie(Range("start") + Range("items"))
End Sub

コマンドボタンcbPrevも同じようにダブルクリックして、以下のコードを記述します。今度は、開始番号から1ページ分の行数(25行)を減じたものを引数startに渡します。ただし、0以下になった場合はエラーになるので、1を渡します(ExcelのMax関数を利用)。

[リスト5][次の25件]ボタンをクリックした時のコード

Private Sub cbPrev_Click()
    Call searchMovie(WorksheetFunction.Max(Range("start") - 25, 1))
End Sub

以上で完成です。VBエディタを閉じ、[開発]タブの[デザインモード]をOFFの状態にし、検索条件を入力し、「検索」ボタンをクリックして、検索データが表示されれば成功です(完全なコードは、ここ(sample.lzh)からダウンロードしてください)。

DOMを利用したXML文書のアクセスについて

DOM(Document Object Model)は、XML文書の要素、属性などを節(node、ノード)とする階層構造(樹形図)と捉えて、アクセスするための道具です。 VBAでは、MicrosoftのMSXMLライブラリを使って、DOMを利用できます。

表6.MSXMLのDOMオブジェクトの種類(一部)

オブジェクト 対応するXML文書の部分
DOMDocument XML文書そのもの
IXMLDOMElement XML文書内の要素
IXMLDOMAttribute 要素の持つ属性
IXMLDOMNode XML文書内のノード
IXMLDOMNodeList XML文書内のノードの配列

図7.樹形図にしたXML文書とオブジェクトの対応

XML文書は家系図のようになっていますので、まずルート要素にアクセスし、子要素に降りたり、兄弟要素に移ったり、というノードウォーキング(要素間の散歩)を行うのが常道です。

図8.ノードウォーキングの様子

シンプルなXML文書のほぼ全体にアクセスする場合は、シーケンシャルなノードウォーキングがアクセスも速いのですが、Atom形式は複雑なデータ表現が可能で、取得したいデータはごく一部なので、今回は特定の要素にアクセスするためのメソッドを多用しています。

表7.MSXMLのDOMプロパティの種類(一部)

オブジェクト プロパティ 意味
XML文書 documentElement ルート要素を参照する
要素 attributes 要素の属性リストを参照する
要素/属性 text 要素/属性の値を表す文字を参照する

表8.MSXMLのDOMメソッドの種類(一部)

オブジェクト メソッド 意味
XML文書 loadXML テキスト文字列をXML文書として取り込む
要素 getElementsByTagName("タグ名") 指定したタグ名を持つ要素リストを取得する
属性リスト getNamedItem("属性名") 指定した属性名を持つ属性を取得する
ノード/要素 SelectNodes("タグ名") 指定したタグ名を持つ要素リストを取得する
ノード/要素 SelectSingleNode("タグ名") 指定したタグ名を持つ単一の要素を取得する

図9.今回のDOMプロパティとメソッドの使い方

まとめ

YouTubeで、他の検索方法を試したい方は、以下のリンクで「デベロッパー ガイド: Data API プロトコル」の「動画の検索」にアクセスできますので、これを参考にして応用してみるとよいでしょう。

http://code.google.com/intl/ja/apis/youtube/developers_guide_protocol.html#Searching_for_Videos
WINGSプロジェクト 遠藤 存著/山田祥寛監修
WINGS プロジェクトについて
テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。2011年5月時点での登録メンバは35名で、現在も一緒に執筆をできる有志を募集中。