2014/03/17

Excel2000,2003マクロの2010化対応

 そろそろExcelも新バージョンに対応しないといけない頃ですよね。
 Excelはさすがにバージョン間の互換性は高いみたいで、マクロを含まないものであれば特に問題はなく対応できるようです。
 あとは、Excel2007以降では、メニュー関係にリボンというUIが導入されているので、実際に使用する人への教育に時間が必要になるかもしれません。

 今回は、Excelマクロで対応が必要な点について書いてみます。
 実のところ、エクセルマクロは結構互換性高いです。筆者が知っている問題点は次の数点です。

項目内容対応方法
Win32API マクロ内でWin32APIを使用する場合で、Excel 64bitで起動する場合。 64bitプログラムではWin32APIを使えないので、PtrSafeという互換命令を咬ませて使います。
詳しくはOffice TANAKAに書いておられる方がいらっしゃるので、ご覧ください。
Window().Activate アクティブなシートを切り替える命令です。微妙に何度かにエラーになります。 おそらくスレッド関係の問題が出ているものと思われます。当方はWorkbooks()配列のNameプロパティーとファイル名が一致するものを検索し、一致したworkbookに対し、Sheets(1).Activeを実行する方法で対処しました。( Workbooks(検索で見つかった指標).Sheets(1).Activate)
オブジェクト配置 オブジェクト描画を行う場合、座標がズレます。単位に微妙な違いがあるようです。 すいません。筆者は対応方法調べている最中です。
列行の上限 列数が256列から16384列に変更になっています。新バージョンのExcelのマクロで作成したシートを、xls形式のExcelシートに貼りこむ処理を行うとエラーになります。列の上限の違いと思われます。 新バージョンのExcelを一旦xls形式で保存し、xls形式のExcelシートに貼りこむ処理を行います。


 まあ、以上の点も、筆者が把握しているものだけなので、実際にはもっとあるかもしれません。
 もし大量にある場合で依頼されたい案件がありましたら、このページにコメント入れてもらえればありがたいです。後日連絡させていただきたいと思います。

0 コメント:

コメントを投稿