Excelマクロが突然動かない悲劇を根絶!ブラウザ自動操作ツール「Playwright」への段階移行で止まらない定型業務を作る実践手順
PR 当サイトはアフィリエイト広告(PR)を利用して製品やサービスをご紹介しています。

月曜の朝、いつものようにExcelの集計マクロボタンを押した瞬間、「実行時エラー」が出て画面がピタッと固まってしまうことがあります。

原因の多くは、IEの廃止やEdgeの自動アップデートによる接続切れです。今回は、現場のExcel業務を止めずに「Playwright(プレイライト)」へ段階移行し、毎月のエラー対応をゼロにする実践手順をわかりやすく解説します。

わたし
わたし

わたしも以前、前任者から引き継いだExcelマクロが月曜の朝に突然動かなくなり、冷や汗をかきながら何百行ものデータを手作業でコピペしてしのいだ苦い記憶があります。「また来月も止まるかも…」と怯える日々から抜け出すための手順を、一つずつ丁寧にまとめました!

この記事でできるようになること|止まらない自動化への3段階ロードマップ

📋この記事を読むと達成できる3つのゴール
01
VBE検索でマクロ停止の原因行を即特定
ブラックボックス化した古いExcelマクロの中から、ブラウザ操作でエラーを起こしている箇所を迷わず見つけ出せます。
02
Playwrightの仕組みを基礎から理解
なぜ今までのやり方だと毎月止まるのか、なぜPlaywrightなら更新知らずで動き続けるのかがスッキリわかります。
03
Excel画面は変えずに裏側だけ自動化
現場が使い慣れたExcelファイル(.xlsx)はそのまま残し、データ取得と転記だけをノンストップで自動完走させます。

社内で長年使われてきたExcelマクロをいきなり全部作り直そうとすると、現場の業務が止まってしまいます。まずは全体像と「この記事に出てくる3つの基本用語」を押さえた上で、無理のないステップで順番に進めていきます。

 

WebDriver更新エラーを解消するPlaywright+openpyxlの3ステップ全体像イラスト
▲ 従来の「中継ドライバ方式(①)」は更新のたびに線が切れるが、Playwright連携(②・③)なら直結で止まらない

そもそも「Playwright」や「WebDriver」とは?専門用語を30秒で整理

ブラウザ自動化の話を調べると、聞き慣れないカタカナ用語がいくつも出てきますよね。まずは本記事で登場する3つのキーワードが「一言でいうと何なのか」を、身近なイメージで整理しておきます。

① Playwright(プレイライト)とは?

WindowsやExcelを開発しているMicrosoft社が公式に開発した、Python用の次世代ブラウザ自動操作ツール(無料ライブラリ)です。人間がマウスで画面をクリックしたり文字を入力したりする動きを、裏側で正確かつ高速に代行してくれます。
最大の特徴は「ブラウザのバージョン更新に自動で追従し、画面の読み込み完了も自動で待ってくれること」です。

② WebDriver(ウェブドライバ)とは?

Excel VBA(SeleniumBasicなど)からEdgeやChromeを操作するときに、間に挟む「中継プログラム(通訳役)」のことです。
Edge本体が毎月自動アップデートされると、手元のWebDriver(msedgedriver.exe)とバージョン番号がズレてしまい、その瞬間にマクロがエラーで止まってしまいます。

③ openpyxl(オープンパイエクセル)とは?

openpyxlとは、PythonからExcelファイルを直接読み書き・操作するライブラリ(定番ツール)のことです。
PlaywrightでWebから集めたデータを、既存のExcel帳票テンプレート(.xlsx)へきれいに流し込んで保存する役割を担います。

わたし
わたし

最初は「Playwrightって何だか難しそうな英語だな…」と身構えていました。でも実際に触ってみると、Microsoftが作っている公式ツールなのでEdgeとの相性が抜群で、「毎月ドライバを手動でダウンロードして入れ替える作業」が丸ごと不要になる感動は本当に大きかったです!

これまでのマクロは「ブラウザが更新されるたびに中継ケーブル(WebDriver)が抜けてしまう状態」でした。従来の方式とPlaywright方式の違いを比較表で整理します。

🔍 比較項目 ⚠️ 従来:VBA+手動ドライバ ✨ 推奨:Playwright+openpyxl
🪙 毎月の保守手間 Edge更新のたび手動差替 自動追従でメンテ0分
⛑️ 画面読込の待機 固定Sleepで空振り多発 要素出現まで自動で待機
🔨 Excel帳票との連携 操作中はPCがフリーズ 裏側で高速書き込み保存
🔔 現場の操作方法 Excel上のボタンを押す 従来通りボタン1つで実行可

【STEP 1】まずExcelのVBE画面を開き、マクロが止まる原因箇所を探す

いきなりプログラムを書き換える前に、まずは「今のExcelブックのどこで古いブラウザ操作が行われているか」を点検します。作業する画面はExcelの標準エディタ(VBE画面)1つだけです。

STEP1 ExcelのVBE画面で止まる原因箇所を検索・特定する手順イラスト
▲ STEP 1:Excel上で「Alt + F11」を押し、VBE画面で古いブラウザ呼び出し行を検索する

対象のExcelファイル(.xlsm)を開いたら、以下の3ステップで原因箇所を洗い出します。

  1. キーボードの Alt + F11 を同時に押してVBE(Visual Basic Editor)を開く
    Excelの画面上に「Microsoft Visual Basic for Applications」というタイトルの編集ウィンドウが開けば準備完了です。
  2. Ctrl + F で検索窓を開き、「対象」を『プロジェクト全体』にして検索する
    検索するキーワードは InternetExplorer または Selenium(WebDriver)の2つです。これらが見つかった行こそが、ブラウザ更新のたびにマクロを止めている犯人です。
  3. メニューの「ツール」➔「参照設定」で『MISSING(参照不可)』がないか確認する
    チェック欄に MISSING: Microsoft Internet Controls と表示されている場合、Windows側からIE部品が削除されたことで起動すらできない状態になっています。
わたし
わたし

他人が作った何千行もあるマクロでも、実はブラウザを起動している場所は CreateObject("InternetExplorer.Application") のたった数行だけ、というケースがほとんどです。まずは Ctrl + F でその場所を見つけるだけで、気持ちが一気にラクになりますよ。

関連記事:レガシーな画面設定エラーを段階的に切り分けるコツ
🔥 あわせて読みたい!

Excelの手作業やマクロの限界を感じたところから、Pythonによる自動化・Web開発へとステップアップしていく実体験プロセスをまとめています。

Excelマクロからの移行やPythonによる自動化を基礎から手元でじっくり学びたい方には、図解が豊富でつまずきにくい入門書を1冊デスクに置いておくのがおすすめです。

💡 Excelマクロからの脱却とPython業務自動化を最短で身につける実践書2選
PR
Excel&ブラウザ自動化
シゴトがはかどる Python自動処理の教科書

Excelブックの読み書き(openpyxl)からWebブラウザの自動操作・データ抽出まで、非エンジニアやVBA経験者がつまずきやすいポイントを丁寧に解説した実践入門書です。既存の定型業務をPythonへ置き換える最初の1冊として最適です。

PR
社内Webツール化への発展
動かして学ぶ!Python Django開発入門 第2版 【電子書籍】[ 大高隆

各担当者のPCに散在するマクロ付きExcelブックを将来的に一元管理された社内Webアプリ・データベースへ集約したい方に向けた体系的な実践書です。Webのフォーム送信やセッションの仕組みも深く理解できます。

【STEP 2】応急処置の限界を知る|なぜEdgeの自動更新で毎月また止まるのか?

「今日・明日の締め処理にどうしても間に合わせたい!」という緊急時には、Edgeの『IEモード』を有効にしたり、msedgedriver.exe を手動で差し替えたりする応急処置が使われます。しかし、これを恒久対策にしてしまうと、翌月また同じトラブルに襲われます。

STEP2 Edgeの自動更新で毎月ドライバ不整合が起きる仕組みと応急処置の限界イラスト
▲ STEP 2:Edge本体は約4週間ごとに自動更新されるため、手動ドライバやIEモードは定期的に切れてしまう

応急処置を行う場合は、以下の「2つの期限・制約」を事前に押さえておく必要があります。

  • ① Edgeの「IEモード」登録は30日間で自動的に期限切れになる
    Edgeの設定画面(edge://settings/defaultBrowser)から社内URLをIEモードに登録しても、エンタープライズポリシーがない環境では30日後に設定がリセットされます。
  • ② 手動配置した WebDriver(msedgedriver.exe)は約4週間で不一致になる
    Edge本体はセキュリティ維持のため約4週間ごとに自動でバージョンが上がります。そのたびに手動でドライバをダウンロードし直す運用は、担当者が異動・不在のときに業務停止を招きます。
わたし
わたし

わたしも最初は「毎月ドライバを入れ替えればいいや」と思っていました。ところが、ちょうど自分が有休を取った日にEdgeの自動更新が重なり、職場から「マクロが動かない!」と緊急連絡が入ったときに、手動メンテナンスの限界を痛感しました。

📌 Microsoft公式ドキュメントにおけるIE11廃止と自動化推奨方針

Internet Explorer 11 デスクトップアプリケーションのサポート終了に伴い、レガシーなCOMオートメーション(InternetExplorer.Application)に依存するスクリプトは動作保証外となり、Web標準の自動化フレームワーク(Playwright等)への移行が推奨されています。(出典:Microsoft Learn 公式発表)

【STEP 3】Playwright+openpyxlへ移行し、「止まらない定型業務」を完成させる

応急処置で当面の締め処理を乗り切ったら、いよいよ本丸である「Playwright + openpyxl」による完全自動化へ移行します。やることはシンプルで、まずPlaywrightでWeb画面からデータを集め、次にopenpyxlでいつものExcel帳票に書き込んで保存する2段階だけです。

STEP3 Playwrightとopenpyxlでブラウザ取得からExcel保存まで自動完走するイラスト
▲ STEP 3:Playwrightが画面取得を担当し、openpyxlが既存のExcel帳票へ直接書き込んで保存する

最初に1回だけ、Windowsのコマンド画面(PowerShellまたはコマンドプロンプト)で以下の2行を実行して、Playwrightとopenpyxlをインストールします。

💻 初回のみ実行:Playwrightとopenpyxlのインストールコマンド
pip install playwright openpyxl
playwright install chromium

この playwright install chromium を実行しておけば、Playwright自身が自動操作専用の安全なブラウザ環境を管理してくれるため、普段使っているEdgeが自動更新されても一切影響を受けなくなります。あとは以下のテンプレートスクリプト(migrate_ie_macro_to_python.py)に対象URLとシート名を入れるだけで動きます。

💻 migrate_ie_macro_to_python.py(Web表の取得からExcel保存までを行う完全テンプレート)
from pathlib import Path
import openpyxl
from playwright.sync_api import sync_playwright

def export_portal_table_to_excel(target_url: str, template_path: str, output_path: str) -> int:
    rows_data: list[list[str]] = []

    # 1. Playwrightで専用ブラウザを裏側(headless)起動して表データを抽出
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(target_url, wait_until="domcontentloaded", timeout=30000)
        # 画面に表(table)が表示されるまで自動で待機するため通信の遅れに強い
        page.wait_for_selector("table.report-grid tbody tr", timeout=15000)

        for tr in page.locator("table.report-grid tbody tr").all():
            cells = [td.inner_text().strip() for td in tr.locator("td").all()]
            if cells:
                rows_data.append(cells)
        browser.close()

    # 2. 既存のExcel帳票テンプレートをopenpyxlで開いて2行目以降へ転記・保存
    wb = openpyxl.load_workbook(Path(template_path))
    ws = wb["日次集計"]
    for row_idx, record in enumerate(rows_data, start=2):
        for col_idx, val in enumerate(record, start=1):
            ws.cell(row=row_idx, column=col_idx, value=val)

    wb.save(Path(output_path))
    return len(rows_data)
わたし
わたし

「現場のスタッフは黒い画面(コマンド)を使えないから、Python化は無理では?」と心配になるかもしれませんが、大丈夫です!Excelのボタンに1行だけ CreateObject("WScript.Shell").Run "python migrate_ie_macro_to_python.py" と登録しておけば、現場の人は今まで通りExcelのボタンを押すだけで裏側でPlaywrightが動いてくれます。

関連記事:仕様変更に負けないPython自動取得スクリプトの作り方
🔥 あわせて読みたい!

古い仕組みが廃止された際、Pythonスクリプトへ段階的に切り替えて毎日のデータ取得を安定稼働させた実践記録です。

日々のスクリプト作成やコードの書き換え作業をより快適に進めるなら、タイピング疲れを軽減するメカニカルキーボードや、実務レベルの自動化設計を体系的に学べる講座もあわせてチェックしてみてください。

💡 コーディング効率と実務エンジニアリング力を引き上げる開発環境&学習講座
PR
QMK/VIAマクロ対応
Keychron K8 Pro QMK/VIA 80% Mac日本語配列 有線 / Bluetooth 5.1 ワイヤレス両対応 テンキーレス ホットスワップ

ブラウザ上のVIA設定でショートカットや定型キーマクロを本体メモリへ直接登録できるプロ仕様のテンキーレスメカニカルキーボードです。吸音フォーム内蔵の心地よい打鍵感で、長時間のPython・VBAコーディングでも指先の疲労を大幅に抑えてくれます。

PR
実務レベルの自走力習得
ディープロ[プログラミング講座]

レガシーなマクロの保守から一歩踏み出し、現場で通用するWebアプリケーション設計やエラー切り分け・チーム開発の基礎を体系的に習得できる実践型プログラミングスクールです。

まとめ

Playwright+openpyxlへの段階移行で「毎月止まるマクロの不安」を解消する

突然動かなくなったExcel VBAの旧IEマクロも、VBE画面での原因箇所の特定、手動ドライバやIEモードの期限把握、そしてPython(Playwright+openpyxl)への段階移行という3ステップを踏めば、現場のExcelファイルを変えずに安定した自動化環境へアップデートできます。

わたし
わたし

最初は小さな定型作業1つだけで構いません。Playwrightでブラウザがスッと動いてExcel帳票が自動で出来上がる瞬間を体験すると、「もう毎月のアップデートに怯えなくていいんだ!」と本当に心が軽くなります。ぜひ今日、VBEを開いて検索するところから始めてみてください。

✅ ExcelマクロからPlaywright移行を成功させる最終チェックリスト
  • Excel上で Alt + F11 を押してVBE画面を開き、InternetExplorer や Selenium の呼び出し箇所を特定したか
  • 応急処置のIEモード(30日期限)や手動WebDriver差し替え(約4週間周期)の限界を把握したか
  • pip install playwright openpyxl と playwright install chromium で自動追従環境を用意したか
  • 既存のExcelテンプレート(.xlsx)を活かし、データ取得と書き込みだけをPythonスクリプトへ切り出したか

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Xでフォローしよう

おすすめの記事