旧バージョンとの互換性

 バージョンアップ時にもっとも気を使うのが、旧バージョンとの互換性です。つまり、Office 97 VBA(VBA 5.0)で開発したコードがそのままOffice 2000(VBA 6.0)上でも動作するかどうか、という点です。Microsoftは、過去の資産の継承に人一倍気を配る会社です。そして、それを裏づけるかのように、バージョンアップのたびに旧バージョンのVBAコードも新バージョンのOfficeで問題なく動作することをアピールします。
 それでは、今回のバージョンアップではどうなのでしょうか。この問いに対する筆者の回答は、ほぼ問題なく動く、です。β版(製品評価版)を含めて約半年間Office 2000を使用してきましたが、残念ながらOffice 97 VBAのコードが完全にOffice 2000上で動作するとは言えないようです。
 ここではExcelを例にとりますが、Excel VBAには[形式を選択して貼り付け]コマンド(図11)に相当するPasteSpecialメソッドがあります。仮に、Excel 97 VBAで、

Selection.PasteSpecial Paste:=xlAllExceptBorders
と記述すると、セルの入力規則だけがペーストされます。しかし、Excel 2000 VBAでまったく同じコードを実行すると、罫線を除くすべてがペーストされます。ちなみに、セルの入力規則をペーストするときには、

Selection.PasteSpecial Paste:=xlDataValidation
というコードを書かなければなりません。

図11:[形式を選択して貼り付け]ダイアログボックス

 ただ、よく考えると、セルの入力規則をペーストするときに、PasteSpecialの組み込み定数に「xlAllExceptBorders」(日本語に訳すと「罫線を除くすべて」)を指定しなければならなかったExcel 97 VBAの方が異常だったわけで、ある意味これはバグフィックスとも言えます。
 ここではすべてを紹介することはできませんが、Office 97 VBAが抱えていた大きなバグのほとんどはOffice 2000になって修正されています。それを考えると、100%の互換性は保証できませんが、Office 2000 VBAの方が動作は安定していることだけは間違いありません。 多少の互換性のリスクはありますが、より動作の安定しているOffice 2000にバージョンアップした方が得策であると考えます。