学習プログラム作成概要 - 2019.06
VBAプログラム開発、スクレイピング・一覧取得【4-1】オブジェクト名を設定する
書籍一覧情報をワークシートへ取得していました。
今回はこのワークシートに取得済みのデータについて、Web側の情報取り込み時にWeb側で削除されている書籍についてワークシート側でも削除できるようにしていきます。
そして、その前段階として画像オブジェクト処理に手を加えます。
- 今回の目的
- なぜやるか
- やりたいこと
- やったこと
- 実施内容
- 書籍情報削除をできるようにする
- 行削除だけでは全て消えない
- 画像の削除も行えるようにしたい
- 書籍画像オブジェクト名を設定する
- オブジェクト名を取得する
- 書籍情報に対応したオブジェクト名をつける
- 画像追加時のオプションにオートシェイプ名付与がない
- オブジェクト要素をどうやって指定するか
- 新規追加オブジェクトの順序が分かれば良い
- オブジェクト数を算出してから追加オブジェクトを処理する
- データを再取得してオブジェクト名を確認する
- 書籍情報削除をできるようにする
今回の目的
特定のオブジェクトを操作できるように、固有名を付与する
なぜやるか
不要書籍削除時に、対象となる書籍の画像を指定できるようにするため
やりたいこと
- オブジェクト名を取得する
- オブジェクトに固有の名前を付ける
やったこと
- オブジェクト操作方法を検討する
- オブジェクト名を取得できるようにする
- オブジェクト追加時にオブジェクト名を設定する
VBAプログラム開発、スクレイピング・詳細データ取得拡張【4】書籍一覧処理の残工程を整理する
書籍一覧から詳細情報をワークシートへ表示できるようにしていました。
前回までに拡張機能として、ワークシートに取得済みの書籍に関しては新規に取得しないようにしました。
これによって今まで全て上書となっていた状態から、「未取得」だけを取り込めるようにしました。
ここまで出来たので、残りの処理として実施したい項目をまとめます。
- ワークシートに取得しているデータについて、Web側で削除されている書籍は、ワークシートからも削除する
- 削除時に書籍画像も併せて削除する
削除処理については、どこにどう追加するかを考えておく必要があります。
- 削除項目だけを確認して、Webになければ消す。
- 冒頭の追加書籍確認時に削除されている書籍も確認して、一緒に処理する。
今回は2つめの処理として考えていきます。
そして、画像についてですが、オブジェクトを直接反映させているため、削除時に対象の書籍オブジェクトが指定できる必要が有ります。
そこで、残りの実装としての順序としては
- 画像オブジェクトを扱える様に名前をつける。
- Web書籍情報取得時にワークシートに削除されずに残っている書籍を書籍する機能を加える。
この2つの機能をつけて、書籍一覧取得はいったん完了とする予定です。
VBAプログラム開発、スクレイピング・詳細データ取得拡張【3】未取得書籍のみデータ取得する
今回作成しているのVBA処理の一つに「書籍情報を取得してワークシートへ一覧表示」というものがありました。
Web上に登録されている書籍情報の詳細ページへアクセスして、その内容をワークシートへ集約できるものです。
しかし、現状のままでは使いにくい点があるので、改修していきます。
- 今回の目的
- なぜやるか
- やりたいこと
- やったこと
- 実施内容
- 現状の書籍取得手順を確認する
- 書籍情報取得はできている
- 毎回同じ処理が行われる
- 取得済みデータは対象外としたい
- 追加書籍判定方法を検討する
- ワークシート上の書籍情報を取得
- ワークシートIDとWebIDを比較
- 追加書籍反映
- VBAコードを修正する
- ワークシート上の書籍情報を取得する
- Web書籍情報から新規書籍を判定する
- ワークシート上の書籍情報の続きに反映させる
- 現状の書籍取得手順を確認する
今回の目的
書籍情報詳細を取得しワークシート表示時に取得済みデータを除外できるようにする
なぜやるか
新たに追加されたデータのみを反映出来るようにするため
やりたいこと
- ワークシートへ取得済みの書籍情報を認識させる
- 取得済み書籍情報は取得しないようにする
- 新たに取得した書籍情報を既存データの続きに表示させる
やったこと
- 現状の書籍取得手順を確認する
- 追加書籍判定方法を検討する
- ワークシート上の書籍情報を取得する
- Web書籍情報から新規書籍を判定する
- ワークシート上の書籍情報の続きに反映させる
VBAプログラム開発、スクレイピング・ログイン機能【2-6】既存モジュールから共通部をクラスモジュール適用に変更する
全ての既存VBAで利用していた処理をクラスモジュールで動作するように再定義しました。
テスト用VBAで動作も確認できたので、既存VBAの一つをクラスモジュールを利用した動作となるように載せ替えを行っていきます。
- 今回の目的
- なぜやるか
- やりたいこと
- やったこと
- 実施内容
- 変数宣言を修正する
- VBA処理内の変数を修正する
- 書籍登録処理内容
- 変数変更箇所を特定する
- Webフォーム入力処理を変更する
- 不要となった標準モジュール内のプロシージャを削除する
今回の目的
作成済みの2つのクラスモジュールを利用して、既存VBAコードを動作するようにする。
なぜやるか
複数の既存VBAで全く同じ処理をしているプロシージャを1箇所のみ作成しておき、動作できるようにするため
やりたいこと
- 作成済みクラスモジュールを利用して既存VBAを動かせるようにする
- 不要となったモジュール内のプロシージャを削除する
やったこと
- 宣言している変数をクラスモジュールで宣言した変数に書き換える
- 宣言変更した変数を使用しているコードを修正する
- 不要となったプロシージャを削除する。
VBAプログラム開発、スクレイピング・ログイン機能【2-5-2】共通処理をクラスモジュール化する(ログイン処理)
前回記事にてクラスモジュールとして、IE読み込み待ち処理をクラス化しました。
当初これだけで、本番組み込みを考えていたのですが、事前にログイン処理についてもクラス化をしてから組み込むことにしました。
テスト用のモジュールを利用して、ログイン処理についてもクラスモジュールへの分割を行います。
- 今回の目的
- なぜやるか
- やりたいこと
- やったこと
- 実施内容
- ログイン処理のクラス化をする
- クラスモジュールとして作成しなおす
- ログインプロシージャの引数を再設定する
- ログイン処理クラスモジュールで変数宣言する
- ログイン処理をよびだす
- ログイン処理のクラス化をする
今回の目的
同一処理プロシージャが複数モジュールに配置されているので、一つに統合する
なぜやるか
プログラム作成観点として、同一処理は集約して参照できるようにするため。
IE読み込み処理はクラス化したが、ログイン処理のクラス化についても事前に動作確認してから実装するため
やりたいこと
- クラス化したモジュールから、次のクラス化方法を検討する
- クラスを追加する
- 変数宣言を変更する
- クラスから別のクラスへ値を渡せるようにする
やったこと
- ログイン処理用クラスを作成する
- 変数宣言をクラスで行う
- メインプロシージャで変数処理を変更する
- ログイン処理クラスからIE読み込み処理クラスへの値引渡をする
- 動作確認をする