システム開発ブログ

Excel2003以前のバージョンで作成したマクロを、Excel2007以降のバージョンで実行する場合の注意点 「マクロから新しいブックを作成し、データを書き込もうとするとレスポンスが悪化する」

加藤

加藤 (2011年5月20日 18:30)
企画開発部

今回は、Excel2003以前のバージョンで作成したマクロを、
Excel2007以降のバージョンで実行する場合の注意点をご紹介します。

Excel2003以前のバージョンで、新しいブックを作成するマクロを実装します。
そのマクロが実装されているExcelファイルをExcel2007以降で開き、
互換モードでマクロを実行した場合、以下のような問題が発生します。

マクロから作成した新規ブックに対して、
そのままマクロでデータの書き込みを行おうとすると
レスポンスが著しく悪化します。

上記の問題に対して、以下のような方法で対処しました。

まず、マクロから作成したブックを保存して閉じてしまいます。
その後、すぐに先ほど閉じたブックを開き直し、
データを書き込むようにします。
すると、レスポンスが改善されます。

実装例を以下に記載しております。
Dim loCreateWorkbook As Workbook

'// 新たなブックを作成する
Set loCreateWorkbook = Workbooks.Add

'// Excel2007以上の場合、Excel97 - 2003形式でBookを保存する
If Application.Version > 11 Then
    loCreateWorkbook.SaveAs Filename:="C:\test\hoge.xls" _ 
                          , FileFormat:=56
Else
    loCreateWorkbook.SaveAs Filename:="C:\test\hoge.xls"
End If

'// 一度、保存して閉じて開き直すことにより
'// Excel2007以上の場合の互換モードでのレスポンスを改善
Application.DisplayAlerts = False
loCreateWorkbook.Save
loCreateWorkbook.Close
Application.DisplayAlerts = True

Set loCreateWorkbook = Nothing
Set loCreateWorkbook = Workbooks.Open("C:\test\hoge.xls")

Excel2003以前のバージョンで作成したマクロで、
新しいブックを作成する処理を実装していた場合、
ユーザの環境がExcel2007以降のバージョンに変更になった際には、
上記の問題が必ず発生します。

システムのトラブル解決を承ります。すぐにシステムリフォームを体験できますシステム診断・システムリフォームのお申し込みはこちらから。

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

ページのトップ