【VBA×Selenium】ブラウザ画面をキャプチャする方法について

Webスクレピングをしていると表示しているブラウザの画面をキャプチャーする場面に遭遇することがあるかと思います。

そのような場合ももちろん既存のメソッドで画面キャプチャ(スクリーンショット)をして保存することが可能です。

今回は、画面をキャプチャーする方法以外にも、画面の最大化状態、ブラウザ全体のキャプチャ方法についても触れています。

基本となる内容なので、しっかり覚えてスキルアップしていただければと思います。

この記事はこんな人におすすめ

この記事はこんな人におすすめです!

  • VBAプログラミング:初学者~初級者
  • Webスクレイピング:初学者~初級者
  • コードだけサクッと取得したい人
  • 効率の良いコードを書きたい人

といったところでしょうか。

VBA×Seleniumに関する過去の記事

VBA×Seleniumに関する小ワザやテクニックなどの参考記事については、過去にご紹介しておりますのでそちらもどうぞ。

今回の記事を読むメリット

画面キャプチャの方法を知るメリットは以下の通りです。

  • VBAの基礎スキル定着
  • 時間短縮と作業効率化
  • 正確な操作の実現

といったところでしょうか。

本件は日常業務でも使用する機会が非常に多いかと思いますので、

一度やり方を覚えてしまえばかなり有効的なスキルになるかと思います。

かつ、スクレイピングを数多く実施していると誰しもが経験する内容かと思いますので、

忘れずに覚えていくことが作業効率につながりますし、

一度やり方を覚えてしまえば今後も活かせる内容になるかと思います。

手順紹介

参考サイト

今回は当ブログを使用してご説明したいと思います。

CHECK!!

※当ブログのURLについてはこちら⇒ブログ

また、今回実施する内容は以下の通りです。

  • ブラウザ画面をキャプチャする
  • ブラウザ画面”全体”をキャプチャする

ブラウザ画面をキャプチャする場合

コード紹介

Sub GetUICapture()
        
    Dim Driver As New Selenium.WebDriver
    
    ' ブラウザを起動する
    Driver.Start "Chrome"  'クロームブラウザを立ち上げます。
    Driver.Get "https://epsilon-delta-blog.com/" '対象のWebサイトにアクセスする
    
    '■ファイル名のみ指定した場合はカレントディレクトリに保存
    Driver.TakeScreenshot.SaveAs "screenshot1.png"

    '■フルパス指定した場合は指定した場所に保存
    Driver.TakeScreenshot.SaveAs "C:\vba\screenshot1.png"

    '■画面を最大サイズにすれば、最大サイズ分キャプチャする(画面全体をキャプチャするわけではない)
    Driver.Window.Maximize
    Driver.TakeScreenshot.SaveAs "C:\vba\screenshot2.png"
    
    Stop
    Driver.Quit
End Sub

結果解説

10行目:ファイル名のみを指定している場合は、PC内のカレントディレクトリに保存されます。

13行目:フルパスも含めた状態で保存した場合は、指定したパスに保存されます。

17行目:画面を最大化表示にした状態でキャプチャーしています。

ただし、あくまでも画面の最大化状態となるため、表示サイト全体ではありません。

ブラウザ画面”全体”をキャプチャする場合

コード紹介

Sub GetUICaptureFllScreen()
        
    Dim Driver As New Selenium.WebDriver
    
    ' ブラウザを起動する
    '■ブラウザ画面を非表示に設定
    Driver.AddArgument "headless"
    Driver.Start "Chrome"  'クロームブラウザを立ち上げます。
    Driver.Get "https://epsilon-delta-blog.com/" '対象のWebサイトにアクセスする
    
    '■キャプチャするサイズを指定(画面全体に指定)
    Dim sWidth As Long
    sWidth = Driver.ExecuteScript("return document.body.scrollWidth")
    Dim sHeight As Long
    sHeight = Driver.ExecuteScript("return document.body.scrollHeight")
    Driver.Window.SetSize sWidth, sHeight
     
    '■フルパス指定した場合は指定した場所に保存
    Driver.TakeScreenshot.SaveAs "C:\vba\full_screenshot.png"
    Stop
    Driver.Quit
End Sub

結果解説

7行目:ブラウザの画面を非表示にしています。

ブラウザ画面全体をキャプチャする場合は必須の内容です。

非表示状態でないと全体はキャプチャできません。

13行目:指定したフルパス内に保存されます。

画像を開くを画面全体をキャプチャしています。

最後に

いかがでしたでしょうか。

Seleniumを使用していると予測不能な謎エラーや疑問に遭遇することが多々あります。

ですので、しっかりマスターして基本を抑えながらと実装できると業務効率も格段に向上するかと思います。

そのきっかけとして、少しでも参考になればと思います。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。

そんな方はいつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

お気軽にご相談ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA