Microsoftが.NETを直接統合するのではなく、Office製品にVBAを同梱するのはなぜですか?[閉まっている]


12

VBAコードから.NETコードを呼び出すことは可能ですが、VBAが存在し続けるのはなぜですか?私が考えることができる唯一の理由はレガシーです。

並べ替えるだけScripting.Dictionaryで、必要なコードの量は恐ろしいものでした。

IDEはVisual Studio 2003のように見えます。そして、多くの小さな詳細があり、それはあなたを狂わせます(行の変更のように、コンパイルエラーのために警告を受け取ります)。または、複数のスプレッドシートを開くと、「VBAProject」に混ざってしまい、本当に混乱します。

モジュール/クラスモジュール/フォームの分割全体は実際にはそれほど悪くはありませんが、フォームに直接ロジックを書くか、すべてを処理する1つの巨大なモジュールを持つことになります。

Alt + F11を押してC#をハックできないのはなぜですか?


11
「私が考えることができる唯一の理由はレガシーです。」そして、それはあなたにとって十分ではありませんか?
陶酔

3
マイクロソフトは、レガシーアプリケーションと下位互換性の王者です。他の答えは、これが私たちが話しているマイクロソフトであることを考えると、私にとって驚きです。

2
@Kiril「私たちはいつもそのようにしていた」ということではないでしょう。おそらく、「後方互換性を壊すことでどれだけの利益が得られるか、どれだけ失うかを比較した結果、価値がないことがわかりました。」
ドーバル

1
@Kiril-あなたはVBAの「代わりに」.NETでOfficeを出荷するように質問します。それを放棄する必要があります。
ジェフ14

3
@Kiril:非常に危険なキャラクターの多くは、dllをドキュメントに埋め込むことも非常に喜んでいますが、あなたの利益のためではありません。
whatsisname

回答:


15

Microsoft Officeには、プログラムでデフォルトの動作を変更/強化できる複数の方法があります。VBAは、ドキュメント内のスクリプティング用にテストされ、実績があり、広く普及している言語です。多くのオフィスの人々はVBAを知って使用していますが、C#のようなより複雑なプログラミング言語を知っていません。顧客が新しい言語を習得した後など、ビジネス上重要なことを行う古いマクロ対応ドキュメントを大量に書き直さなければならない場合、Officeはあまり販売されません。後方互換性は重要な機能です!

Officeの完全な.NETスタックには、いくつかの依存関係管理(dll:sなど)が必要になる可能性が高く、単純なタスクの管理が簡単に重くなります。軽量スクリプトの代わりになることはほとんどありません。VSTOを使用すると、C#を使用できますが、プラグインの開発サイクルが重くなります。

Microsoftのプログラムマネージャーがこれについてここに書いています。VBAが小規模なスクリプト作成の目的で使用されていることは明らかです。


記事の説明はとても良いです。ありがとう。
キリル14

6
元スタッフとして、一部のクライアントは、ゲイツ/バルマー/ナデラなどをスピードダイヤルや通常のチャットで利用できるようにするために大金を払い、VBAはVBAの動作を壊す変更(特にExcelで)およびバージョン間でさえ)非常に迅速に注意を引きます。また、未熟な人だけのためではありません。それを使用するプロの開発者の軍隊があります。C#は、VBAで実用的な知識として非常に一般的に求められています。
ジェームズ・スネル14

この議論は、多くのコードを壊したVB.Netを支持して、MSがVB6年前に廃止することを止めませんでした。
マイク・ローリー

3

まあ、答えは厳密に「レガシー」ではありません。答えは、VBAはVB6でもVB.Netでもないということです。VBAです。別の、しかし関連する言語。VBAをVB.Netに置き換えると、必然的に多くのドキュメントが破壊されます。

VBAをVB.Netに置き換えると、ほとんどの場合、主要製品のかなりの数のユーザーのデータが失われますが、これは良いことではありません。

また、VBAのターゲット市場はプログラマーではありません。


7
VBAはVB6の非常に近いいとこです。唯一の重要な違いは、APIに関係するものです。すなわち、ExcelまたはWordオブジェクトモデルの代わりにVBForms。これらの違いがなければ、VBAコードをVB6にコピーアンドペースト(またはその逆)することができ、99%の割合で引き続き機能します。
ロバートハーヴェイ14

3
VBAとVB.Net/C#のサポートは、相互に排他的である必要はありません。
ジョエルCoehoorn

2

Officeを購入する主な理由が、多くのマクロとVBAが含まれる既存のすべてのドキュメントとの互換性を維持することであると考える場合、VB6の群衆のようにそれらのユーザーを扱い、それを伝えることは非常に勇敢なマイクロソフトになるでしょうそれを吸い込んで.NETでコーディングを開始し、今までで一番のuservoiceリクエストを見てください!

しかし、LibreOfficeの連中は無意識の中に元気づけられると思います!

VBAは、「プログラミング」ではなく、Officeの生産性のためのものです。文書からより多くの力を必要とする日は、すべてを書き直すためにプログラマーを雇う日です。もう1つの理由は、Visual Studioマクロが.NETでもない理由だと思います。devenv4COMオブジェクトはVBAとそれほど変わらないと考えてください。


彼は彼らにVBAを捨てることを求めていません。彼は、追加オプションとして.Netを使用するように依頼しています。
ジョエルCoehoorn

1

レガシー人気の間にわずかではあるが重要な違いがあると思います。そして、あなたが私と同じくらい多くの契約をしたとき、あなたはVBAがめちゃくちゃ人気があることを知っています:)私はプログラミングについて何も知らない「Excel jockeys」のために私がやった契約の数を伝えることはできませんそれは生死の問題のようにVBAを粉砕することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.