URLのリストから連続してWebページのスクショを撮り、Excelに貼り付けていく作業を自動化します。SeleniumBasic(旧Selenium VBA)を使います。
ここのところ日差しめちゃ強い!外出に日よけ対策必須ですね。
最近、クラウドワークスさんで下記のようなお仕事の募集案件がありました。
「Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けるサンプル実装」
これをじっさいの実務として実装してみるつもりで、Seleniumの勉強がてら、試しにやってみました。
Selenium VBAとは、Google ChromeやFireFoxなどのWebブラウザを自動操作できるExcelのVBAライブラリのことです。
SeleniumはPythonにもあるライブラリですが、それのマクロ(VBA)版、といったところでしょうか。
SeleniumBasicのインストール
Selenium VBAは旧名称
まず、Selenium VBAは旧名で、2015年にSeleniumBasicという名称に変更されたようです。
また、現在はWindowsのみの対応のようです。
最新のSeliumBasicは、こちらからダウンロードできます。
Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub
「SeleniumBasic-2.0.9.0.exe」をクリックしてダウンロード後、ファイルをダブルクリックすればインストールが始まります。
インストール後、Excelを起動し、「Alt」+「F11」でVBAエディタを開きます。
メニューの「ツール > 参照設定」から、「Selenium Type Library」にチェックを入れます。
これで、SeleniumBasicが利用できるようになりました。
Internet Explorer側の設定をする
SeleniumBasicでIE(インターネットエクスプローラー)を操作するためには、IE側の設定が必要です。
・InternetExplorerDriver · SeleniumHQ/selenium Wiki · GitHub
下記はRequired Configuration(必要な設定)を自動翻訳し、抜粋したものです。
- Windows VistaまたはWindows 7上のIE 7以降では、各ゾーンの保護モード設定を同じ値に設定する必要があります。
値は、すべてのゾーンで同じである限り、オンまたはオフにできます。
保護モード設定を設定するには、
[ツール]メニューから[インターネットオプション...]を選択し、[セキュリティ]タブをクリックします。
各ゾーンについて、「保護モードを有効にする」というラベルの付いたタブの下部にチェックボックスがあります。 - さらに、IE 10以降では「拡張保護モード」を無効にする必要があります。
このオプションは、[インターネットオプション]ダイアログの[詳細設定]タブにあります。 - Windows 10の場合、表示設定で「テキスト、アプリ、その他のアイテムのサイズを変更する」を100%に設定する必要もあります。
- IE 11の場合のみ、ドライバーが作成するInternet Explorerのインスタンスへの接続を維持できるように、ターゲットコンピューターにレジストリを設定する必要があります。
32ビットWindowsインストールの場合、レジストリエディターで調べる必要があるキーは
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHEです。
64ビットWindowsインストールの場合、キーはHKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BFCACHEです。
FEATURE_BFCACHEサブキーは存在する場合と存在しない場合があり、存在しない場合は作成する必要があることに注意してください。
重要:このキー内で、iexplore.exeという名前のDWORD値を値0で作成します。
レジストリキーの設定については、下記を参考にしてください。
Windows 10のレジストリ設定の基本 | Think IT(シンクイット)
VBAコードを記述する
Excelを起動し、新しいブックを新規作成します。
マクロが使用できるように、「名前を付けて保存」から、「Excel マクロ有効ブック(*.xlsm)」形式で一度ファイルを保存します。
下記は、コードのサンプルです。「Alt」+「F11」で再度VBAエディタを開き、下記のコードを貼り付けます。
※コードの37行目、「スクショを保存するフォルダの場所」は任意で指定してください。
「例:D:\images\」 のように、最後に「\」をつけてください。
コードの貼り付け場所がわからない、という方は、こちらを参考になさってください。
Office TANAKA - 今さら聞けないVBA[マクロってどこに書けばいいの?]
Excelの編集
スクショを撮りたいWebページのURLを記述する
Excelに戻ります。作成したxlsm形式のExcelファイルの「Sheet1」に、
A1セルから下にスクリーンショットを撮りたいWebページのアドレスを入力します。
プログラムの実行ボタンを設置
VBAに記述したコード(マクロ)を実行するボタンを設置しましょう。以下はその手順です。
- Excelメニューから [挿入 > テキストボックス] を選び、テキストボックスを作成したら、中に適当なボタン名を記述します。
- つづいてテキストボックスを右クリックし、表示されたメニューから [マクロの登録(N)…] を選択します。
- 表示されたマクロの一覧から、実行させるマクロ名(SelenuimScsho)を選択し、 [OK] をクリックします。
これで、実行ボタンが設置できました。
プログラムの実行
さきほど作成したプログラムの実行ボタンを押してVBAを実行すると、IEブラウザが起動し、Excelのシートに並べたURLを順次表示して、スクリーンショットをシートに貼り付けていきます。
URLを最後まで巡回し、すべての作業が完了すると、ブラウザを閉じてプログラムを終了します。
実行結果とまとめ
以上です。実行結果はこちらです。
IEの設定など、最初は少し手間なところはありますが、ほかにもGoogleなどの検索ページから指定したキーワードの検索結果を取得したり、事務作業にもいろいろ応用できることがあると思います。
ぜひチャレンジしてみてください!ここまで読んでいただき、ありがとうございました。
ではまた♪再見(チャイツェン)!