Microsoft neden .NET'i doğrudan .NET'e entegre etmek yerine Office ürünlerinde hala VBA gönderiyor? [kapalı]


12

VBA kodunuzdan .NET kodu çağırmanın mümkün olduğunu biliyorum, ama neden VBA var olmaya devam ediyor? Düşünebilmemin tek nedeni miras.

Sadece sıralamak zorunda kaldım Scripting.Dictionaryve gerekli kod miktarı korkutucuydu.

IDE, Visual Studio 2003'e benziyor. Ve sizi çıldırtan birçok küçük detay var (Çizgiyi değiştirmek ve bazı derleme hataları nedeniyle bir uyarı almak gibi). Veya, birden fazla e-tablo açarsanız, "VBAProject" içine karışır ve bu gerçekten kafa karıştırıcıdır.

Tüm modül / sınıf modülü / form bölümü aslında o kadar da kötü değil, ama her zaman formlarda doğrudan mantık yazarak veya her şeyi işleyen büyük bir modüle sahip olmakla sonuçlanıyorum.

Neden Alt + F11 tuşlarına basamıyorum ve C # 'a hack yapamıyorum?


11
"Düşünebilmemin tek nedeni miras." Ve bu senin için yeterli değil mi?
Euphoric

3
Microsoft, eski uygulamaların ve geriye dönük uyumluluğun kralıdır ... Bu, bahsettiğimiz Microsoft olduğu göz önüne alındığında, başka herhangi bir cevap benim için şaşırtıcı olurdu.

2
@Kiril Büyük olasılıkla "her zaman bu şekilde yaptık"; muhtemelen "geriye dönük uyumluluğu bozarak ne kadar kaybedeceğimizden ne kadar kazanacağımızı karşılaştırdık ve buna değmeyeceğini gördük."
Doval

1
@Kiril - soru, Office'e VBA'nın "yerine" .NET ile gönderilmesini ister. Bu vazgeçmeyi gerektirir.
JeffO

3
@Kiril: Çok tehlikeli karakterlerin birçoğu da dll'leri belgelere yerleştirmekten çok mutlu olur, ancak yararınıza olmaz.
whatsisname

Yanıtlar:


15

Microsoft Office'in, varsayılan davranışı programlı olarak değiştirmenize / geliştirmenize olanak tanıyan birden çok yolu vardır. VBA, doc-script için savaşta test edilmiş, kanıtlanmış ve yaygın bir dildir. Birçok ofis insanı VBA'yı biliyor ve kullanıyor, C # gibi daha karmaşık programlama dillerini bilmiyorlar. Müşteriler yeni bir dil veya başka bir şey öğrendikten sonra, iş açısından kritik şeyler yapan eski makro özellikli bir sürü belgeyi yeniden yazmak zorunda kalsaydı Office satılmayacaktı. Geriye dönük uyumluluk kilit bir özelliktir!

Office için tam bir .NET yığını muhtemelen bazı bağımlılık yönetimi (dll: s, vb.) Gerektirir ve basit görevleri yönetmek için kolayca ağırlaşır - hafif komut dosyası oluşturma için neredeyse bir alternatif değildir. VSTO, C # ile birlikte, daha ağır bir eklenti geliştirme döngüsünün fiyatına gitme yeteneği verir.

Microsoft'ta bir program yöneticisi bu konuda burada yazdı . VBA'nın küçük komut dosyası oluşturma amaçları için olduğu ve hala orada olacağı açıktır.


Makaledeki açıklama çok iyi. Teşekkürler.
Kiril

6
Eski bir personel olarak, bazı müşterilerin Gates / Ballmer / Nadella vb.'nin Hızlı arama ve düzenli sohbetler için mevcut olması için büyük para ödediğini ve VBA'nın VBA davranışını (özellikle Excel'de) ve hatta sürümler arasında bile) İSTİSNASINDA hızlı bir şekilde dikkat çekin. Ayrıca bu sadece vasıfsızlar için değildir; bunu kullanan bir profesyonel geliştiriciler ordusu var. C #, VBA ile çalışma bilgisi olarak oldukça sık aranmaktadır.
James Snell

Bu argüman, MS'in VB6'yı eski haline getirmesini engellemedi ve VB.Net lehine bir sürü kod kırdı.
Mike Lowery

3

Cevap kesinlikle “miras” değil. Cevap VBA'nın ne VB6 ne de VB.Net olduğu: VBA. Ayrı fakat ilgili bir dil. VBA'yı VB.Net ile değiştirirse kaçınılmaz olarak bir çok DOKÜMANI kırar.

VBA'nın VB.Net ile değiştirilmesi, kesinlikle çok sayıda ana ürün kullanıcısı için veri kaybına yol açacaktır - iyi bir şey değil.

Ve VBA için hedef pazarları programcı değil.


7
VBA, VB6'nın çok yakın bir kuzenidir. Tek önemli fark API ile ilgili olanlardır; yani Excel veya Word nesne modelleri yerine VBForms. Bu farklılıklar yoksa, VBA kodunu VB6'ya kopyalayabilir / yapıştırabilirsiniz (veya tam tersi) ve yine de yüzde 99 oranında çalışacaktır.
Robert Harvey

3
VBA ve VB.Net/C# desteğinin karşılıklı olarak birbirini dışlaması gerekmez.
Joel Coehoorn

2

İnsanların Office'i satın almasının ana nedenini, birçoğunda makro ve VBA bulunan tüm mevcut belgelerle uyumluluğu korumak olduğunu düşünürseniz, bu kullanıcılara VB6 kitlesini yaptığı gibi davranmak ve onlara söylemek çok cesur bir Microsoft olacaktır. emmek ve .NET kodlamaya başlamak, sadece şimdiye kadar # 1 uservoice isteğine bir göz atın !

Ben LibreOffice adamlar kendilerini bilinçdışına tezahürat olacağını hayal ediyorum!

VBA, "programlama" yerine Office'teki üretkenlik içindir. Belgelerinizden daha fazla güce ihtiyaç duyduğunuz gün, her şeyi yeniden yazmak için bir programcı kiraladığınız gündür. Sanırım başka bir neden Visual Studios makroları da .NET değil - devenv4 COM nesnesinin VBA'dan çok farklı olmadığını düşünün.


Onlardan VBA'yı terk etmelerini istemiyor. Onlardan ek bir seçenek olarak .Net 'e sahip olmalarını istiyor.
Joel Coehoorn

1

Bence miras ve popülerlik arasında küçük ama önemli bir fark var . Ve sahip olduğum kadar çok sözleşme yaptığınızda, VBA'nın inanılmaz derecede popüler olduğunu öğreniyorsunuz :) "Excel jokeyleri" için programlama hakkında hiçbir şey bilmeyen kaç sözleşme yaptığımı söyleyemem ama VBA'yı bir ölüm kalım meselesi gibi ezebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.