Excel VBAで外部のExcelファイルを開く処理を実装すると、画面いっぱいに対象ファイルが表示されて邪魔になることがあります。
今回は、ファイルをバックグラウンドで開いて画面更新を抑制する方法を学びましたので、その手順とコードをご紹介いたします。
実現したいこと
- 外部のExcelファイルをユーザーに見せずに開きたい
- 自動処理用に一時的に開くファイルなどを、バックグラウンドで静かに処理したい
方法:ScreenUpdating プロパティで画面描画を抑制する
VBAには Application.ScreenUpdating というプロパティがあり、これを False に設定することで、処理中の画面のちらつきや表示更新を抑えることができます。
この機能を使うことで、外部ファイルをユーザーに表示させることなく開くことが可能になります。
使用したVBAコード
以下が、外部のExcelファイルをバックグラウンドで開くための基本コードです。
Sub OpenWorkbookSilently()
Dim ExternalWorkbook As Workbook
' 画面の更新をオフにする
Application.ScreenUpdating = False
' 外部のExcelファイルを開く
Set ExternalWorkbook = Workbooks.Open("C:\Users\s_mori\OneDrive - MACCS.cloud\デスクトップ\ショートカット\01_SKY関係\SKY_ED.xlsx")
' 必要な処理(読み取り、コピーなど)をここで行う
' 画面の更新をオンに戻す
Application.ScreenUpdating = True
End Sub
コードのポイント
Application.ScreenUpdating = False
ファイルを開く前に画面更新を停止します。これにより、Excel画面にファイルが表示されることはありません。Workbooks.Open(...)
外部のExcelファイルを通常通り開きます。VBA側では参照できるようになります。Application.ScreenUpdating = True
処理が終わった後に画面更新を再開することで、元の状態に戻します。
注意点
ScreenUpdatingは表示制御であり、完全に非表示で開いているわけではありません。一部環境ではウィンドウの切り替えが見えることもあります。- 処理中にエラーが発生した場合、
ScreenUpdating = Trueが呼ばれず、画面が更新されなくなることがあります。
その場合はOn Error処理を加えておくと安心です。
まとめ
外部のExcelファイルをバックグラウンドで開くには、Application.ScreenUpdating を使うのが効果的です。
- 画面更新を停止してからファイルを開く
- 処理後に画面更新を再開
- VBA処理をユーザーに意識させずに実行できる
定型処理やバッチ処理など、自動化用途において非常に便利なテクニックです。
本記事が少しでも参考になれば幸いです。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
