パソコン大好き | nekoca.com

パソコンを紹介するサイト

Office365 Windows11でエクセルマクロは遅くなるのか?クリップボードの履歴

time 2021/12/19

Office365 Windows11でエクセルマクロは遅くなるのか?クリップボードの履歴

 ExcelマクロをWindows10で動作させると遅くなっていた現象をWindows11ではどうなるのかを確認しました。

 Windows10で検証をしたのは2年前ですので、新しいバージョンのWindowsでは解消されているか、否か。

Windows10でマクロが遅くなるおさらい

 Windows10で追加された機能であるクリップボードの履歴がExcelマクロが遅くなる原因となっていました。

【解決】Windows10になったらエクセルマクロが遅い、動かない

 クリップボードの履歴をオンにして、[CTRL]+[C]等の操作を行ったときに、その履歴がWindowsによって保存される機能ですが、この機能をオンにした場合はExcelマクロの処理速度が遅くなるだけでなく、Excelマクロによるコピー処理が繰り替えされるマクロの場合には、最悪な場合はフリーズしてしまい実行が不能となる不具合が出るものでした。

 Excelマクロ中でも、Copyメソッドを実行した場合に手で操作した時と同じように、クリップボードの履歴に影響があったためです。

 過去記事での実験では2万行のシートを100シートコピーするまでの時間を計測しました。

クリップボードの履歴をオン:1分3秒

クリップボードの履歴をオフ:9秒

 このような結果になっていました。

 クリップボードの履歴を残す機能により、マクロとしては余計な処理が動作してしまい、便利機能が残念な処理速度低下を招いた結果です。

Windows11でも同じマクロを実行してみる

 Windows11での結果も同様の予想をしております。

 OSが新しくなったと言っても、UIが変わっただけの印象だったからです。

Excelマクロのソース

 Excelマクロのソースは以前記事のものをそのまま利用します。

Option Explicit

Public Sub SheetCopy()
    Dim intLoop As Integer
    Dim strMsg As String
    Dim datStart As Date
    Dim datEnd As Date
    
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With
   
    datStart = Now
    
    For intLoop = 1 To 100
        Worksheets.Add after:=Worksheets(Worksheets.Count)
        
        With Worksheets(1)
            .Activate
            .Range("A1:AX20000").Copy
        End With
        
        With Worksheets(Worksheets.Count)
            .Activate
            .Range("A1").PasteSpecial Paste:=xlPasteValues
        End With
    Next
    
    datEnd = Now
    
    strMsg = "Start: " & Format$(datStart, "hh:nn:ss") & "   End: " & Format$(datEnd, "hh:nn:ss")
    
    Call MsgBox(strMsg)
    
    Debug.Print strMsg
    
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
        .DisplayAlerts = True
    End With
End Sub

クリップボードの履歴オン

 Windows11の設定からクリップボードの履歴をオンにします。

 設定→システム→クリップボードの順に開き、クリップボードの履歴をオンにします。

▲クリップボードの履歴をオン

 結果:8秒

 以前より早くなっている…。

クリップボードの履歴をオフ

 同じ設定のクリップボードの履歴をオンにします。

▲クリップボードの履歴をオフ

 結果:8秒

 クリップボードの履歴をオン、オフの場合でまったく同じスピードでした。

まとめ

 Windows10の2019年頃のバージョンでクリップボードの履歴をオンとした場合に、Excelマクロの実行が遅くなっていた現象ですが、クレームがあったのか、さすがに改善をしているようです。

 今回の検証では、クリップボードの履歴をオンにした場合でも問題なく実行されるように改善されていることが確認できました。

 もしかしたら、最近のWindows10のバージョンでは改善をしていたのかもしれませんね。

 せっかくの便利機能をオフにすることなくExcelマクロが実行できるようになったのは良かったです。

 しかし、ここ2年でITの環境は着実に変化をしており、Excel、Excelマクロの出番も少なくなりつつあります。

 Excelが万能すぎるITツールだったがために数十年も重宝されてきたものですが、組織の中では管理しにくいツールだったのでなくなっていくのは仕方がないですが。

 Excelは小規模な組織や個人で利用するツールなのかもしれません。

コメント

管理猫について

茶トラ

茶トラ

管理猫の茶トラです!