質問

VB6 のように、VBA も近いうちに廃止されるのでしょうか?新しい Office アプリケーションを VBA で開発すべきではないでしょうか?それとも、新しい Office アプリはすべて VSTO で開発する必要がありますか?

アップデート:最近これを読んだ 記事.

役に立ちましたか?

解決

Office VSTO は Office VBA に比べて多くの追加機能を提供します。私は Microsoft が VBA を終了するつもりだとは思っていませんが (実際、 彼らははっきりと言いました 少なくとも Office 14 までは存在するでしょう。Office 2007 = Office 12)、追加の柔軟性と機能を活用するために、アプリケーションを VSTO に移行する努力は十分に価値があると思います。

実際のところ、VBA を非推奨にするのは現実的ではないと思います。かなりの量の Office プログラミングがビジネス ユーザーによってマクロ レベルで行われており、それがすぐになくなるとは思えないからです。これらの人々は通常、VSTO 対応 IDE にアクセスできません。

他のヒント

VSTO には新しい機能がありますが、VBA と比較すると大きな欠点も多数あります。

まず、コード アクセス セキュリティにより、VSTO アプリケーションの展開が困難になる可能性があります (これは礼儀正しいことです)。

もう 1 つは、VSTO 開発環境は、「パワー ユーザー」開発者にとって VBA ほどアクセスしにくいという点です。たとえば、すぐに始めるためのマクロ レコーダーはありません。

そして、大きな問題は、アウトプロセス COM オブジェクトとの .NET 相互運用がうまく機能しないことです。たとえば、Excel VSTO アプリケーション内から他の Office アプリケーション (Word、PowerPoint、Outlook) を操作する場合、「」で説明されている理由により、これらのアプリケーションの複数のコピーがバックグラウンドで実行されていることがわかります。 このKB記事.

これらすべてが、既存の VBA アプリへの巨額の投資と相まって、VBA がすぐには廃止されないことを意味します。

マイクロソフトは次のように述べています VBAもサポート予定 当面はこの取り組みを進めていますが、新しいアプリには VSTO を使用することも推奨しています。

最新の Mac バージョンの MS Office は VBA をサポートしておらず、64 ビット Windows は仮想 32 ビット アウトプロセス モードで VBA を実行します。したがって、Office をプラットフォームとして使用する新しいアプリケーションを計画している場合は、VSTO が最適です。 絶対に 当然のことですが、レガシー サポートについてはあまり心配する必要はありません。

@cori が指摘しているように、MS がサポートを打ち切り、既存のソフトウェアの多くを破壊することは、マーケティング上大きなノーノーです。

Microsoft は、.NET が最初にリリースされて以来、VSTO が統合された Office のマネージ コード バージョンについてヒントを出し続けてきました (おそらく VB6 IDE が VBA に統合されるのと同じ方法で、したがって VS IDE は VSTO に統合されるでしょう)。

どれだけの量のコーディングが必要であるかを考えると、また、これによってユーザーに表示される機能がまったく生成されないことを考えると、これが Microsoft の優先順位リストの上位にあるのかどうか、私は非常に疑問です。彼らは既存のコードベースの上にオブジェクトのマネージ コード セットを重ねて (Joel Spolsky が最初に VBA を Excel に導入するときに既存の C コードベースの上に COM オブジェクトのセットを重ねたのと同じように)、新しい IDE を起動したのではないかと想像できます。をデフォルトとして使用し、古いものを非表示にします。それさえも大変な作業になります (マクロ レコーダーを作成することを想像してください!)。もちろん、これにより .NET が Office の前提条件となり、Office チームは銃を突きつけられた場合にのみ受け入れます。

もちろん、実際に製品から VBA が削除されることはありません。Excel は引き続き Excel 4 マクロをサポートし、Word には Word 6 マクロをサポートする WordBasic Automation オブジェクトがまだあります。多すぎるため、どちらも削除される気配はありません。サポートするレガシー コード - そして、この 10 年間、これらのコーディング モデルを使用した人は誰もいませんでした。

もし Microsoft が Office に .NET 環境を導入することがあれば (率直に言って、そんなことは決して実現しないでしょう)、Office の新機能に対する VBA サポートの追加を中止するかもしれません。それが VBA の廃止に最も近づくことになるでしょう。

がここにあります マイクロソフトからのコメント 将来の VBA サポートについて。一言で言えば、Windows バージョンの Office では廃止されません (ただし、Mac バージョンでは廃止されます)。

VBA が廃止されるまでには程遠いです。実際、VBA は MAC 上の次のバージョンの Office に再導入される予定です ( http://www.microsoft.com/presspass/press/2008/may08/05-13MacBU2008PR.mspx).

現場のほとんどの人々にとって、VBA と C XLL (そして VB6!!) は引き続き最適なツールです。現在の .NET 連携は遅く、生産性の向上はゼロです。ExcelDNA などのサード パーツ ツールを使用すると、多少は痛みが軽減されますが、Office のアンマネージド C ベース (およびアセンブラー ベース) コード ベースが .NET に適合しにくいことは明らかです。

VBA アドインは展開が少し面倒ですが、VSTO はさらに面倒です。また、VSTO ではコードを実行する前に CLR を起動する必要があるため、多少のオーバーヘッドが発生します。

しかし、何よりも重要なことは、VSTO は、VBA を書く苦痛を取り除きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top