【チュートリアル】VBAでIE自動化ツールを作る(その9) 書籍検索ツール開発(仕様検討)

こんにちは、自動化エンジニアをしています。kozuです。

エクセルVBAによりWebページの要素(テキストボックス、ボタンなど)を操作したり、表示されている情報を取得する自動化ツールの開発方法を紹介します。実際のWebサイトを自動操作し情報を取得するマクロの開発を通して、自動化ツールの開発について学ぶことができます。

本連載では、チュートリアルということでVBAの開発手順から始め、IEの操作についてどのようなページでも共通で使用できるコード(共通部品)を作成します。最初に共通部品を作成しておくことで、自分でIEの自動化ツールを作成する際に少量の実装で効率よく開発できるようになります。

この章では、これまでに実装した共通部品を使用したIEの自動化ツールの開発を行っていきます。今回は出版社(秀和システム)のWebサイトから指定した条件で新しい本を検索するツールを開発します。私がよく購入している技術書が秀和システムの本であったため、自動化対象として選んでみました。

1.対象者

ブラウザで定期的に手作業で行っているデータ入力やデータ収集等の作業から開放されたい、楽したいと考えている方を対象に、エクセルVBAで自動化するツールの開発ができるようになることを目指しています。プログラミングの経験がない方でも、コードをコピーすれば開発できるようになっています。

2.開発環境

以下の環境を使用します。
バージョンは異なっていても問題ないと思います。
・OS:Windows10
・エクセル:Microsoft Excel2007
・ブラウザ:InternetExploer11

3.操作手順

以下の操作を自動化する。
① IEで秀和システムのトップページを表示する。
② 「詳細検索」ボタンをクリックし、検索フォームを表示する。

トップ


④ 検索フォームにそれぞれの条件を入力し、検索ボタンをクリックする。

検索フォーム

検索結果

⑤ 検索結果から左上の本から順番に以降の処理を行う。
⑥ 本のタイトルをクリックし、詳細ページに遷移する。
⑦ 詳細ページから本の情報を取得し、シートに記録する。

画像4

4.robos.txtの確認

robots.txtを確認します。上記の操作でアクセスするURLがDisallowに含まれていないため、問題ないことが確認できます。

5.インターフェース

インプット・マスタ・アウトプットの3シートを用意します。インプットシートは検索条件の設定欄や実行ボタンのシートになります。マスタシートは検索条件としてセレクトボックスで選択する値のテキストと設定値の紐付けになります。セレクトボックスをVBAで操作するには、HTMLのselectタグの「value」に値を設定する必要がありますが、表示されているテキストとJavascriptで処理する値は異なります。シートで値を設定するときはWebサイトと同様に表示されているテキストを選び、VBA側でJavascriptで処理する値を設定するようにします。アウトプットシートは検索結果を出力するためのシートになります。それぞれのシートに必要な項目は以下の通りです。

インプットシート
・秀和システムのWebサイトのURL
・キーワード(検索条件)
・タイトル(検索条件)
・著者名(検索条件)
・ジャンル(検索条件)
・ISBN(検索条件)
・表示件数(検索条件)
・並び順(検索条件)
・取得件数
・マクロ実行ボタン

マスタシート
・ジャンル
・シリーズ
・並び順
※表示件数はvalueの値が数値であるためマスタには用意しません。

アウトプットシート
・No(出力結果の行番号)
・タイトル
・著者
・ジャンル
・書店発売日
・ISBN
・判型・ページ数
・定価
・URL

インターフェース_インプット

インターフェース_マスタ

インターフェース_アウトプット

6.動作仕様

① 「インプット」シートにURLと検索条件を入力
② 「実行」ボタンをクリックする
③ 「アウトプットひな形」シートをコピーする
④ 3.操作手順の通りに自動操作する
  ※「インプット」シートに設定されている検索条件のみ検索フォームに入力する
⑤ ③でコピーしたシートに詳細ページの情報を設定する
⑥ 取得件数になるまで、または全ての本を取得するまで④~⑤を繰り返す
  ※1ページの表示件数内で終了しない場合は次のページに遷移する)


ここまでで書籍検索ツールの仕様を決めましたので、次回はVBAの実装をしていきます。上記で説明したシートは事前に作成しておいてください。マスタシートについては上記では3つずつしか用意していませんが、次回で全量を設定します。





この記事が気に入ったらサポートをしてみませんか?