Dim moAppXls As Object
Dim moWBook As Object
'Excel起動
Set moAppXls = CreateObject("Excel.Application")
'Excelファイルを開く
Set moWBook = moAppXls.Workbooks.Open([Excelファイルのパス])
'---- 値を設定するなど処理を記述 ----
'Excelのバージョンが2003より後の場合
If moAppXls.Application.Version > "11.0" Then
moWBook.CheckCompatibility = False
End If
'保存
moWBook.Save
'互換性チェックの設定を戻しておく
If moAppXls.Application.Version > "11.0" Then
moWBook.CheckCompatibility = True
End If
'---- 各オブジェクトの開放処理など ----
Access2007+Excel2007で、VBAから互換性チェックを行わないように設定する
松本 (2011年9月27日 17:00)
ソフトウエア開発部 / Access / Excel / VBA
Access2007のVBAからExcelファイルをExcel2007を使って操作したり、
作成する機会も多いと思います。
その場合に、対象のファイルがExcel2003以前の形式だと、
互換性チェックの確認ダイアログが出ることがあります。
ダイアログを出さずにExcelファイルを保存したい場合は、
以下のソースを書けば、ダイアログが表示されなくなります。
Workbook.CheckCompatibility = False
Access2007+Excel2007の環境では、
このコードだけで問題なく設定できたのですが、
Access2007Runtime+Excel2003の環境では、エラーになってしまいました。
(2003以前のバージョンかどうか確認するプロパティですからね...)
そこで、使用するExcelのバージョンを確認してから、上記のソースを実行することにしました。
各バージョンは、Excel2003 = 11.0、Excel2007 = 12.0 ですので、
「11.0」より大きい場合だけ、互換性チェックを行わないようにし、
ファイル保存後に、互換性チェックをするように再設定しました。
具体的なソースは、下記を参考にしてください。
Dim moAppXls As Object Dim moWBook As Object 'Excel起動 Set moAppXls = CreateObject("Excel.Application") 'Excelファイルを開く Set moWBook = moAppXls.Workbooks.Open([Excelファイルのパス]) '---- 値を設定するなど処理を記述 ---- 'Excelのバージョンが2003より後の場合 If moAppXls.Application.Version > "11.0" Then moWBook.CheckCompatibility = False End If '保存 moWBook.Save '互換性チェックの設定を戻しておく If moAppXls.Application.Version > "11.0" Then moWBook.CheckCompatibility = True End If '---- 各オブジェクトの開放処理など ----