マクロはどう変わったのか


マクロユーザーにとってExcel 2007の関心といえば、新しいUIのリボンでも、設定数が無制限になった条件付き書式でも、カラフルになったグラフ機能でもなく、既存のマクロは動くのか?という一点でしょう。結論から言うとExcel 2007のマクロは基本的には変わっていません。もちろん、新機能や改良に合わせて新しいオブジェクトやプロパティが追加されていますが、今までのマクロは従来通り動くと考えていいでしょう。もちろん、すべてのマクロを動作確認したわけではありませんが、VBAの仕様から見てそう判断できます。

たとえばVBEのオブジェクトブラウザでは、VBAで使用できるオブジェクトやプロパティの詳細を確認できます。これを見る限り、Excel 2007の新しいVBAは、従来のVBAを継承していることがわかります。

また、もっと詳しく調べたいときには「OLE/COM Object Viewer」を使うと便利です。これはVisual Basic 6.0などに付属するツールで、DLLの内部を調べて、プロパティやメソッドの定義を確認できます。

このツールで、新しいVBAのObject Libraryを見ると、従来の定義はほとんどそのまま残っているのがわかります。したがって、古いマクロでも今まで通りに動作するはずです。実際に、多くのマクロを試してみましたが、どれもエラーにはなりませんでした。

しかし、安心はできません。Excel 2007は大きく仕様が変わった新しいExcelです。特にメニュー周りの変化には要注意です。何しろ、今まで当たり前に操作していたメニューとツールバーがなくなってしまったのですから。これは従来のマクロにも影響を与えます。たとえばマクロでツールバーを作成したり、独自のメニューを追加しているようなシステムは、Excel 2007ではエラーにはならないものの、今までと同じUIを提供することはできなくなりました。たとえば次のマクロは新しいツールバーを作成して表示します。

Sub Sample1()
    Dim myBar As CommandBar
    Set myBar = CommandBars.Add
    myBar.Controls.Add ID:=23
    myBar.Controls.Add ID:=3
    myBar.Controls.Add ID:=2521
    myBar.Visible = True
End Sub

Excel 2003で実行すると次のようになります。

ところが、そもそもツールバーという機能自体が廃止されたExcel 2007の実行結果は次の通りです。

確かにエラーにはなりません。なりませんけど、これで納得できるでしょうか。実行すると、リボンに[アドイン]タブが追加され、[ユーザー設定のツールバー]グループにアイコンが追加されます。リボンはツールバーのように、ワークシート上でフローティング状態にすることはできません。操作するには、いちいちリボンのタブを切り替えなければならないのです。

では、メニューを操作するマクロはどうでしょう。次のマクロは[書式]メニューの末尾に[文字色の色]という独自のメニューを追加します。

Sub Sample2()
    With CommandBars(1).Controls("書式(&O)").Controls.Add()
        .Caption = "文字列の色(&X)..."
        .OnAction = "chgTextColor"
        .BeginGroup = True
        .FaceId = 1988
    End With
End Sub

Excel 2003では次のようになります。

これがExcel 2007では、

となります。今度は[アドイン]タブの[ユーザーメニュー]グループが追加されました。[書式]メニューに限った話ではありません。[ファイル]メニューだろうと[挿入]メニューだろうと、そのメニュー自体がなくなってしまったのですから、Addメソッドの追加先はすべて[ユーザーメニュー]グループとなります。

メニューやツールバーを操作するようなマクロは、エラーにこそなりませんが従来と同じUIを提供できません。"使い物にならない"と言っても過言ではありません。これはVBAが変わったというより、Excel 2007(だけじゃありませんが)のメニューシステムそのものが大きく変わったためです。

なお、マクロではありませんが、今までのExcelには「ブックにツールバーを添付する」という機能がありました。独自に作成したりカスタマイズしたツールバーをブックに添付すると、別のパソコンにツールバーを移動できました。そのように、ツールバーを添付したブックをExcel 2007で開くと、マクロでツールバーを作成したときと同じようになります。

[アドイン]タブに追加されたツールバーとメニューは、右クリックから削除できます。

Excel 2007で追加された新しいオブジェクトやプロパティについては、別のページで紹介します。