私が働いている会社はExcelシートで運営されています。これらのシートのいくつかには、何らかの形式の VBA コードが埋め込まれています。メンテナンスはしていますが、かなり古い感じがします。
Office VBA はどうなりますか?
Microsoft が Office 用の埋め込み .NET マクロ言語をリリースしていないのはなぜですか?
簡単な答え: まだしばらくは大丈夫でしょう。
長い答え: VB6 (VBA の実際の姿) はほとんどサポートされていない、死んでいる言語であり、最後に更新されたのは 10 年前の同じ時期の IDE です。Office に埋め込まれており、VBA が削除または変更された場合に動作を停止する Office アプリが何百万もあるため、VBA がまだ残っているだけです。言うまでもなく、何百万人ものユーザーが非常にイライラしています。
では、どうすれば前進できるのでしょうか。マネージ コードで Office を再実装できますか? マイクロソフトはそれをしたいのですか? 彼らは、リボンよりもさらに大きな後方互換性を破り、マクロの記録と解釈された埋め込みコードの概念を破棄するつもりですか? ユーザーが COM Interop などを使用して、Visual Studio で VB.NET を使用しているのを見ることができません。
1 つの結果にお金をかけなければならない場合 (それでもあまり賭けたくないのですが)、動的言語ランタイムと、いくつかの言語がさまざまな準備状態にあるという事実に目を向けます。Office アプリの COM モデルに適した置換またはラッパーを備えた DLR が、VB6 ランタイムを置き換えるとします。さらに、VBA が DLR 言語として実装されているとします。従来の VBA は、別の (最新の、サポートされている) インタープリターで引き続き実行されます。おまけに、Excel マクロを Python、Ruby、またはその他の好きな DLR 言語でプログラムできます。
しかし、それは私の最善の推測にすぎません。実際にそれが近いかどうかはわかりません。ただし、Ruby で Excel マクロをプログラミングできるようになりたいと思っています。
彼らはOffice for the Mac の次のバージョンに VBA サポートを追加しているので、しばらくはそうなると思います。
.NET に飛び込む時が来たと言えます。
Excel から .NET ライブラリを呼び出すことができます。
私は昨日、同じ考え方に出くわしました。なんという偶然なんでしょう。アルバイト先の上司が突然、私が 3 年前に作成した Excel アプリケーションを探していました (2007 年に退職し、フルタイムの仕事を補うためにアルバイトとして戻ってきました)。それを MS Access 2003 アプリケーションに変換したことを覚えています。ただし、新しい要件を満たすには、アプリを更新する必要があります。どうやら、私はすでに VBA を忘れていたと思います。戻ってゼロから学び直すのに適した時期ではありません。私は C# 2.0/3.0 を使用しています。その MS Access 2003 アプリケーションを C# 3.0 で再構築することは、素晴らしい学習体験になると確信しています。
@IainMH は正しいです...「あなたが .NET に飛び込む時が来ました」