Excelが大好きだ!

Excel大好き経理マンがExcelの事を書き綴っていきます。


スポンサードリンク

ADO.Connection.Openの遅延問題解消

以前に開いているブックに対してのADO.Connection.Openの処理が遅くなる事象を紹介しました。
2025年10月7日時点でこの事象が解消されているようなので簡単にご紹介いたします

遅延問題

この問題が発生した時に下記の記事で事象と対応方法についてご紹介しました。
www.excellovers.com

この問題は遅くとも2025年4月16日には発生していました。
症状としては開いているブックに対してADO.Connection.Openを実行すると12秒ほど時間がかるというものです。
この事象は当然ながらマクロが記載されている自ブックに対しても影響があったため、ADOを使ったSQL処理全般が遅延するという個人的には影響が大きいものでした。

問題解消

仕事でほぼ毎日この機能を使用したマクロを利用しているので、早く直らんかなぁと思うこと約半年。
2025年10月7日にいつものようにマクロをポチって(時間かかるから)目を離そうとした瞬間にマクロの実行が終了しました。

思わず「えっ!?」と唸ってしまいました。

もう一度実行してもやはり一瞬で終わりました。
仕事中はツイはしないというルールにしているにも関わらず、思わず呟かずにはいられませんでした。

    Dim myCon As ADODB.Connection
    Set myCon = New ADODB.Connection
    Dim myRS As ADODB.Recordset
    Set myRS = New ADODB.Recordset
    Dim mySQL As String
    
    myCon.Provider = "Microsoft.ACE.OLEDB.16.0"
    myCon.Properties("Extended Properties") = _
                    "Excel 12.0;HDR=YES;IMEX=1"
    myCon.Open ThisWorkbook.FullName  ⇐ ここの処理が遅かった

前回と同じような上記のコードを実測したところ0.01秒ほどで処理が完了しました。
対応策としてご紹介したIMEX=1を外しても同様の処理時間です。
対象のデータ量を増やしてもOpenの処理自体は同様に0.01秒ほどで完了しますので、Openが遅くなるという事象に関しては完全に治ったのではないでしょうか。

まとめ

半年間も放置されてMicrosoftさんは直す気ないんやと若干ふて腐れておりましたが、直してくれて感無量です。
ありがとう、Microsoft