1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KB5127936適用後に発生するSeleniumBasicの起動エラーについて

1
Last updated at Posted at 2026-10-31

はじめに

2026/10/29に公開された Windows Update の累積更新プログラム KB5127936 の適用後に、それまで動作していた SeleniumBasic にてエラーが発生する事例が報告されています。

エラーは、Driver.Start “chrome” の行で発生しており、その内容は TimeoutErrorで、
“The driver failed to open the listening port xxx within 10s”
というもの。

Excel VBA Selenium problems opening port - stackoverflow

現時点では原因の詳細は判明していませんが、更新プログラムのアンインストールによって解消したという報告もあり、Windows Updateとの関連が疑われます。

原因と思われるところ

【追記 2026/11/04】

Windows側の内部的なネットワーク処理やデータ構造の変更に伴い、従来のIPヘルパーAPIである GetTcpTable を使用してTCPリスニングポートを検出する古いアプリケーションやライブラリ(SeleniumBasicなど)で互換性問題やエラーが発生しているようです。

暫定回避策

PowerShellでChromeDriverを外部プロセスとして起動し、SeleniumBasicのStartRemotelyメソッドを使用してそれに接続する

恒久対応

プログラムの修正、GetTcpTable → GetExtendedTcpTable APIに変更するとともにエントリー数の計算も5から6に修正が必要

EndPointExt.csの変更箇所抜粋
[DllImport(IPHLPAPI)]
            internal extern static int GetExtendedTcpTable(IntPtr pTcpTable, ref int dwOutBufLen, bool order,int ulAf, int TableClass, int Reserved);
            
public bool WaitForListening
while (122 == (result = Native.GetExtendedTcpTable(buffer, ref bufferSize, false, 2, 3, 0))) {

int tcpTableLength = 1 + dwNumEntries * 6;

//loop over each entry to find the port (1 entry is 6 integers)
for (int i = 1; i < tcpTableLength; i += 6) {
    int dwState = tcpTable[i];
    int dwLocalAddr = tcpTable[i + 1];
    int dwLocalPort = tcpTable[i + 2];

    if (dwLocalPort == portBE) {
        if (dwLocalAddr == 0 || dwLocalAddr == 0x0100007f) {
            if (dwState == 2)
                return true;
            break;
        }
    }
}

SeleniumBasicの置かれている現状

Excel VBAでWebスクレイピングする「SeleniumBasic」は .NET Framework 3.5が必要なのですが、Windows 11 Build 27965以降、「.NET Framework 3.5」がWindowsの「Feature on Demand」(FOD)オプションコンポーネントとして提供されなくなります。
今後は、「.NET Framework 3.5」は別途スタンドアロンインストーラーが必要になります。

Selenium Basic をフォークして、.NET Framework 4 に対応(2020年3月3日)したものがあります。これすら6年前で更新が停止しています。

ただ、KB5127936 による根本原因が何か分かっていないため、.NET Framework 4対応版で動く可能性は残っています。

【追記 2026/11/04】
GetTcpTable APIが原因なら、.NET Framework 4対応版で動く可能性はないですね。

SeleniumVBA への移行

SeleniumVBA は SeleniumBasic の後継バージョンではなく、別の開発者による別プロジェクトになります。
Pythonなどによる他のプログラム言語に切り替える手もありますが、Excel VBA から WebDriver を操作するという目的は同じなので、既存のVBAコードを活用しながら移行できます。

次に紹介する移行記事には、具体的なコードの変更例があるので、こちらを参照する構成がよいでしょう。
今のChatGPTなどの生成AIならば、この記事を参考にコードを変更してと依頼すれば、修正されたコードを出力してくれます。

最後に

SeleniumBasicは、長年にわたってExcel VBAからWebブラウザを操作するための便利なツールでした。
しかし、開発の停止、.NET Framework 3.5への依存、ChromeDriverのバージョン管理など、今後も安心して使い続けるには不安が残ります。
今回のWindows Updateによる障害は、SeleniumBasicから移行する一つのきっかけになるのではないでしょうか。
これからもExcel VBAでWebスクレイピングを続けたい方には、SeleniumVBAへの移行をお勧めします。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?