• ベストアンサー

複数バージョンのExcelでマクロを使用する時の注意点

Excelマクロを使用したテンプレートを作っています。 ユーザのOfficeのバージョンがOffice2000/XP/2003と バラバラなのですが、マクロを作成する時に注意する べきこととかありますでしょうか? (バージョン互換がない関数があるとか…) ちなみにマクロはOfficeXPで作成しています。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 マイグレーション(Migration)のことですね。 そうですね。一番確実なのは、一番下のバージョンで、VBAコードを作ることですね。 最初に問題になるのは、参照設定です。同じPC内ならよいのですが、別のPCで、同じ Dll があるとは限りません。下位にあわせればよいということでもありません。VBAで探して、設定はできますが、ちょっと大げさになってしまいます。よく、DAO3.5と3.6 のバージョンが違うときにトラブルがあります。また、身近なところでは、カレンダー・コントロール(元はAccess付随のコントロール)はどうでしょうか?SpreadSheet コントロールも問題ありますね。 EXCEL2003 で、ワークシート上で、Calculate メソッドでエラーが出ることがあります。また、EXCEL2002 だけが、データベースの引数のワイルドカードがない場合の戻り値が違います。EXCEL2003 とEXCEL2000は、ワイルドカードがなくても、ワイルドカードがあることになります。 CommandBarのControlsで、インデックスを使った場合に、トラブルが起こります。FindControlメソッドで対処します。 全Versionで、VBAでは、改ページ(HPageBreak)を使ったコードは、失敗に陥る可能性が強いです。(これを使うときは、Microsoft のサポートを注意してお読みください。コードだけでは分りません。) XP以上で作った配列は、EXCEL 2000 では確保数(上限5,400程度)と低いので、それ以上ではエラーが出ます。 Excel 2002 以前で日付と認識されたデータは、Variant型の配列を利用して、Range オブジェクトのValue プロパティなどに設定した場合、設定後のデータ型が日付型(Date) ではなく文字列型(String) として認識されます。 Application のハンドル、Application.hwnd は、EXCEL 2000では取れませんので、API関数が必要です。 Versionには関係がありませんが、Windows Scripting Host(Wsh) 関連のオートメーションを呼び出すときに、そのVersion の違いよって機能が違います。 今、思いつく程度を上げてみました。 ワークシート自体のほうは、私はよく分りません。

Tgoo
質問者

お礼

回答ありがとうございます。 参考にさせて頂きます。

関連するQ&A