Mengapa Microsoft masih mengirimkan VBA dalam produk Office, daripada mengintegrasikan .NET secara langsung? [Tutup]

12

Saya tahu bahwa mungkin untuk memanggil kode .NET dari kode VBA Anda, tetapi mengapa VBA terus ada? Satu-satunya alasan yang bisa saya pikirkan adalah warisan.

Saya hanya perlu mengurutkan Scripting.Dictionarydan jumlah kode yang dibutuhkan menakutkan.

IDE terlihat seperti Visual Studio 2003. Dan ada banyak detail kecil, yang membuat Anda gila (Seperti mengubah garis, dan mendapatkan peringatan karena beberapa kesalahan kompilasi). Atau, jika Anda membuka lebih dari satu spreadsheet, itu bercampur dengan Anda "VBAProject" dan ini benar-benar membingungkan.

Seluruh modul / classmodule / form pembagian sebenarnya tidak terlalu buruk, tapi saya berakhir setiap saat dengan langsung menulis logika dalam bentuk, atau memiliki satu modul besar yang menangani semuanya.

Mengapa saya tidak bisa menekan Alt + F11, dan meretas di C #?

Kiril
sumber
11
"Satu-satunya alasan yang bisa kupikirkan adalah warisan." Dan itu tidak cukup untukmu?
Euforia
3
Microsoft adalah raja aplikasi warisan dan kompatibilitas mundur ... jawaban lain akan mengejutkan bagi saya mengingat ini adalah Microsoft yang sedang kita bicarakan.
2
@ Kiril Kemungkinan besar bukan "kami selalu melakukannya seperti itu"; itu mungkin "kita telah membandingkan berapa banyak yang bisa kita dapatkan dari melanggar kompatibilitas ke belakang vs berapa banyak kita akan kehilangan, dan menemukan itu tidak layak."
Doval
1
@ Kiril - pertanyaan Anda meminta untuk mengirim Office dengan .NET "bukan" dari VBA. Itu akan membutuhkan ditinggalkannya.
JeffO
3
@ Kiril: banyak karakter yang sangat cerdik juga akan sangat senang untuk menanamkan dll dalam dokumen, tetapi tidak untuk keuntungan Anda.
whatsisname

Jawaban:

15

Microsoft Office memiliki banyak cara untuk memungkinkan Anda mengubah / meningkatkan perilaku default secara terprogram. VBA adalah bahasa teruji pertempuran, terbukti dan luas untuk skrip in-doc. Banyak orang kantor tahu VBA dan menggunakannya, sementara mereka tidak tahu bahasa pemrograman yang lebih kompleks seperti C #. Office tidak akan dijual sebanyak jika pelanggan harus menulis ulang banyak dokumen yang diaktifkan makro yang melakukan hal-hal penting bisnis - setelah mereka mempelajari bahasa baru atau apa pun. Kompatibilitas mundur adalah fitur utama!

Setumpuk .NET penuh untuk Office kemungkinan memerlukan beberapa set manajemen ketergantungan (dll: s, dll) dan akan dengan mudah menjadi berat untuk dikelola untuk tugas-tugas sederhana - ini bukan alternatif untuk skrip yang ringan. VSTO memberi Anda kemampuan untuk menggunakan C #, tetapi dengan harga siklus pengembangan plugin yang lebih berat.

Seorang manajer program di Microsoft telah menulis tentang ini di sini . Sudah jelas bahwa VBA masih dan akan ada untuk keperluan skrip kecil.

Petter Nordlander
sumber
Penjelasan dalam artikel ini sangat bagus. Terima kasih.
Kiril
6
Sebagai mantan staf, saya dapat menambahkan bahwa beberapa klien membayar uang besar agar Gates / Ballmer / Nadella dll tersedia di Speed-dial serta obrolan reguler dan bahwa VBA dianggap cukup kritis sehingga setiap perubahan yang merusak perilaku VBA (terutama di Excel) dan bahkan antar versi) mendapatkan perhatian LUAR BIASA dengan cepat. Juga tidak berarti hanya untuk yang tidak terampil; ada sepasukan pengembang profesional yang menggunakannya. C # cukup umum dicari dengan VBA sebagai pengetahuan kerja.
James Snell
Argumen ini tidak menghentikan MS dari VB6 usang tahun lalu mendukung VB.Net yang memecahkan banyak kode.
Mike Lowery
3

Yah, jawabannya tidak sepenuhnya "warisan". Jawabannya adalah VBA bukan VB6 atau VB.Net: VBA. Bahasa yang terpisah, tetapi terkait. Jika diganti VBA dengan VB.Net itu pasti akan merusak banyak DOKUMEN.

Mengganti VBA dengan VB.Net hampir pasti akan menghasilkan kehilangan data bagi sejumlah besar pengguna produk utama mereka - bukan hal yang baik.

Dan target pasar mereka untuk VBA bukan programmer.

jmoreno
sumber
7
VBA adalah sepupu VB6 yang sangat dekat. Satu-satunya perbedaan material adalah yang berkaitan dengan API; yaitu VBForms bukannya model objek Excel atau Word. Jika tidak ada perbedaan itu, Anda dapat menyalin / menempelkan kode VBA ke VB6 (atau sebaliknya), dan itu masih akan bekerja 99 persen dari waktu.
Robert Harvey
3
Dukungan untuk VBA dan VB.Net/C# tidak harus saling eksklusif.
Joel Coehoorn
2

Jika Anda mempertimbangkan alasan utama orang membeli Office adalah untuk menjaga kompatibilitas dengan semua dokumen yang ada, banyak di antaranya memiliki makro dan VBA di dalamnya, itu akan menjadi Microsoft yang sangat berani untuk memperlakukan pengguna seperti mereka melakukan kerumunan VB6 dan memberitahu mereka untuk menyedotnya dan mulai coding dalam. NET, lihat saja permintaan uservoice # 1 yang pernah ada !

Saya membayangkan orang-orang LibreOffice akan menghibur diri mereka sendiri sampai tidak sadar!

VBA adalah untuk produktivitas di Office, bukan "pemrograman". Hari Anda membutuhkan lebih banyak kekuatan dari dokumen Anda adalah hari Anda menyewa seorang programmer untuk menulis ulang semuanya. Saya kira alasan lain adalah mengapa macro Visual Studios juga tidak .NET - anggap objek COM devenv4 tidak jauh berbeda dengan VBA.

gbjbaanb
sumber
Dia tidak meminta mereka untuk membuang VBA. Dia meminta mereka untuk memiliki .Net sebagai opsi tambahan.
Joel Coehoorn
1

Saya pikir ada sedikit perbedaan, tetapi penting, antara warisan dan popularitas . Dan ketika Anda telah melakukan banyak kontrak seperti yang saya miliki, Anda belajar bahwa VBA sangat populer :) Saya tidak bisa memberi tahu Anda berapa banyak kontrak yang telah saya lakukan untuk "joki Excel" yang tidak tahu apa-apa tentang pemrograman tetapi dapat menghancurkan VBA seperti itu masalah hidup atau mati.

Coder Tidak Dikenal
sumber