はじめに
Excelファイルを大量に自動操作するなかで、
ファイルを開くたびに警告メッセージやマクロが起動したり、データリンクの更新の有無を聞かれたり、と、ファイルを1つ開くたびに警告が表示され、折角自動処理をするのに都度動作がストップする時があります。
書く文
下記の文を使うとても静かに作業できました。
アラートを表示させない
'Excelの口を封じる。(警告オフ)
Application.DisplayAlerts = False
'Excelの動作を封じる(トリガー式の自動マクロを起動させない。)
Application.EnableEvents = False
'Excelの画面更新を封じる
Application.ScreenUpdating = False
'念のためファイルの存在確認を開く前に実施。
'ファイルが存在しない場合もエラーで止まるので。
If Dir("ファイルフルパス") <> "" Then
'そっと開く。(データリンクの更新をせずにブックを開く。※)
Workbooks.Open Filename:=FullName, UpdateLinks:=0
'そっと閉じる。
Workbooks.Close SaveChanges:= False
データリンクの更新の引数については下記のようになっているようです。
- 0 外部参照、リモート参照ともに更新されません。
- 1 外部参照は更新され、リモート参照は更新されません。
- 2 リモート参照は更新され、外部参照は更新されません。
- 3 外部参照、リモート参照ともに更新されます。
まずはファイル単体で試してみる。
Dim ws As Worksheet
Dim fullname As String
Fullname = "c:\\filepath\filename.xlsx" 'ファイル
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
If Dir("FullName") <> "" Then
Set ws = Workbooks.Open(Filename:=FullName, UpdateLinks:=0)
'ここにファイルごとに実施する処理を書く
ws.Close SaveChanges:= False
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
おわり
2019/02/09 コードに誤りがあったので修正