ちらつきを防ぐ
Excel VBA でワークブックを非表示で開き、必要な処理をバックグラウンドで実行後、閉じる処理をすることができます。しかし、その際、非表示で開いても、タスクバーに一瞬だけワークブックが表示され、ちらつきが見えてしまいます。
この問題は Excel.Application オブジェクトを利用するとことで解決できます。
残念ながら、実際の処理速度向上にはつながらないのですが、ちらつきがなくなる分、体感速度が上がったような印象を受けます。
通常版( ちらつきが見えるコード)
Workbooks オブジェクトを利用して、ワークブックを開くと、Open 関数を実行した時点で一瞬だけ表示されます。
Dim sBookName As String Dim wbReadBook As Object sBookName = Dir("*.*", vbNormal) Do While True If sBookName = "" Then Exit Do Set wbReadBook = Workbooks.Open("D:\Test\" & sBookName) ActiveWindow.Visible = False wbReadBook.Close (False) sBookName = Dir() Loop
改良版( ちらつきが見えないコード)
Excel.Application オブジェクトを利用して、Workbooks オブジェクトを作成して利用すると、完全にバックグラウンドでオブジェクトが作られるだけなので、一瞬だけでも表示されることはありません。このケースの場合 ActiveWindow オブジェクトの操作は不要です。
Dim sBookName As String Dim wbReadBook As Object Dim oxl As Excel.Application Set oxl = CreateObject("Excel.Application") Dim obk As Excel.Workbooks Set obk = oxl.Application.Workbooks sBookName = Dir("*.*", vbNormal) Do While True If sBookName = "" Then Exit Do Set wbReadBook = obk.Open("D:\Test\" & sBookName) wbReadBook.Close (False) sBookName = Dir() Loop