Selenium(Edge/Chrome)

Edge/ChromeでWebページを印刷する【shadowRoot】【Selenium】【ExcelVBA】

Webページ内でページを印刷したい場合があります。
Chromeで Ctrl + P をした時同様、Seleniumに印刷処理を指示可能です。

Edge/ChromeでWebページを印刷するサンプルコード

Dim driver As New Selenium.WebDriver

Public Sub sample()

    '■ブラウザを起動
    driver.Start "chrome" 'Edgeの場合はdriver.start "edge" +下記のJSPathも変更必要
    driver.Get "https://vba-create.jp"

    '■印刷用shadowRootのクリックをJSPathをstrに格納
    Dim str As String
    str = "document.querySelector(""body > print-preview-app"").shadowRoot.querySelector(""#sidebar"").shadowRoot.querySelector(""print-preview-button-strip"").shadowRoot.querySelector(""div > cr-button.action-button"").click();"
    
    '■印刷用ウィンドウを呼出
    driver.ExecuteScript "setTimeout(function(){window.print();}, 0);"
    driver.Wait 5000

    '■印刷用ウィンドウへ切り替える
    driver.SwitchToNextWindow
    driver.ExecuteScript str

    '■印刷時間を待つ。
    driver.Wait 100000
    driver.Close
    
End Sub

注意点

  • JSPathはChromeのVerによって異なる可能性があります。
  • JSPathのエラーが出た場合は、Chromeで任意のURL立ち上げた後、以下手順で取得しましょう。
    1.Ctrl + P で印刷ダイアログを出す。
    2.印刷ダイアログで右クリック→「検証」
    3.印刷ボタンのJSPathを取得。
  • ShadowRootで要素が選択できない隠れている形になるため、JavaScriptで操作する必要があります。

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

  1. 分かりやすい解説ありがとうございます!
    余白の設定や印刷枚数の変更についても言及があれば嬉しいです!

  2. いつも参考にさせて頂いております。
    可能であれば、印刷後に、また新たなタブを開くコードについてお教えいただけませんでしょうか。お願いいたします。

    • 少し状況がわかりません。そのまま新しいタブ開くではダメなのでしょうか?そちらはSelenium「新しいタブで開く」【ExcelVBA】で可能な認識ですが不可能で有れば有償対応可能です。お問い合わせください。

タイトルとURLをコピーしました