Visual Basic 6.0 ve VBA arasındaki fark


208

İkisi arasındaki fark nedir. Her zaman VBA'nın VB'nin 'sakat' versiyonu olduğunu düşündüm, ancak bir arkadaşım geçen gün bana sorduğunda gerçek farklılıkların ne olduğu hakkında hiçbir fikrim yoktu.

Ayrıca, örneğin Excel kullandığınızda, bu VB veya VBA mı?

Yanıtlar:


175

Hemen hemen tüm programlama amaçları için VBA ve VB 6.0 aynı şeydir.

VBA, programınızı yürütülebilir bir ikili dosyaya derleyemez. Projenizi içermek ve yürütmek için her zaman ana bilgisayara (örneğin bir Word dosyası ve MS Word) ihtiyacınız olacaktır. Ayrıca VBA ile COM DLL oluşturamazsınız.

Bunun dışında IDE'de bir fark var - VB 6.0 IDE karşılaştırıldığında daha güçlü. Öte yandan, ana bilgisayar uygulamasının VBA'ya sıkı bir şekilde entegrasyonu vardır. Uygulamaya yönelik global nesneler ("ActiveDocument" gibi) ve olaylar bildirimde bulunulmadan kullanılabilir, bu nedenle uygulamaya özgü programlama basittir.

Yine de hiçbir şey Word'ü tetiklemenizi, VBA IDE'yi yüklemenizi ve Word ile hiçbir ilişkisi olmayan bir sorunu çözmenizi engellemez. VB 6.0'ın (teknik olarak) yapabileceği ve VBA'nın yapamayacağı bir şey olup olmadığından emin değilim. Yine de MSDN bir karşılaştırma sayfası arıyorum.


7
Microsoft.com sayfalarında kısa bir karşılaştırma sayfası yok ya da iyi saklandılar. Tabii ki VBA ile birlikte gönderilmeyen COM nesnelerine başvurmadıkça, VB 6.0 kodunun VBA'da değiştirilmediğini söylemek yeterlidir.
Tomalak

7
VBA ve Vb6 aynı dll dosyasını kullanır, bu yüzden kod da çalışır. Ancak, VB6'da VBA'da olmayan bir Printer nesnesi gibi bir şey var ve bunun neden olduğunu bilmiyorum. Aksi takdirde, temel dillerde hiçbir fark olmadığını düşünüyorum.
Dick Kusleika

46
Bu yüzden bir Office Belgesi açmanın çalıştırılabilir dosyayı açmakla hemen hemen aynı riski taşıdığını eklemeye değer olduğunu düşünüyorum.
Oorang

13
VB ayrıca Yazıcılar koleksiyonuna ek olarak Pano, Ekran ve Uygulama nesnelerine de sahiptir. Form paketleri tamamen farklıdır, çünkü VB'de pencereli kontrollerden kaçınmak için yolunuzdan çıkmanız gerekir, ancak VBA'da hWnd odaklı API çağrılarını kullanmak çok daha zordur çünkü kontrollerin çoğu penceresizdir. Ve kontrollerden bahsederken, VB'de kendi yazınızı yazabilir ve bunları VBA'da ve başka yerlerde kullanabilirsiniz. Diğer niggles - Nesne Tarayıcısına bakın (IDE'de F2 tuşuna basın).
Karl E. Peterson

3
Bunun eski olduğunu unutmayın. VBA, 64 bit veri türleri (LongLong, LongPtr) ve daha fazla değişiklik desteği ile VBA 7'ye güncellendi. VB sürüm 6'da takılı kaldığından bu yeni özellikleri desteklemiyor. Bu cevap daha fazla değişikliği tartışıyor. Kısacası, artık VB'nin yapamayacağı şeyler var, ama VBA yapabilir.
Erik A

47

VBA, Visual Basic for Applications'ın kısaltmasıdır ve VB'nin küçük "uygulamalar için" komut dosyası kardeşidir. VBA gerçekten Excel'de değil, diğer ofis uygulamalarında da kullanılabilir.

VB ile, VBA ile mümkün olmayan tek başına bir windows uygulaması oluşturulabilir.

Ancak geliştiricilerin VBA'yı kendi uygulamalarına "bu uygulamaların otomatikleştirilmesi için bir komut dosyası dili" olarak "yerleştirmeleri" mümkündür.

Düzenleme : VBA SSS bölümünden :

S. Uygulamalar için Visual Basic nedir?

A. Uygulamalar için Microsoft Visual Basic (VBA), geliştiricilerin Microsoft Visual Basic'in tüm gücünü kullanarak özel çözümler oluşturmalarını sağlamak için tasarlanmış gömülebilir bir programlama ortamıdır. VBA'ya ev sahipliği yapan uygulamaları kullanan geliştiriciler, uygulama işlevselliğini otomatikleştirip genişleterek özel iş çözümlerinin geliştirme döngüsünü kısaltabilir.

VB.NET'in yalnızca VB ile sözdizimini paylaşan başka bir dil olduğunu unutmayın.


9
Aslında, Microsoft VB.Net "Visual Basic" olarak adlandırır. Bkz. Msdn.microsoft.com/en-us/vbasic/default.aspx .
DOK

19
Evet. Bu, Google üzerinden VB veya VBA'ya özel yardım aradığımda saçlarımı çıkarmak istememe neden olan bir gerçek. Aptalca pazarlama kararı.
Tomalak

8
@Tomalak: İşte bu yüzden not ettim ;-)
fretje

2
@DOK: Evet, ama bu VB.NET'in "biz geliştiricilerin" VB6 veya daha önce bildiği görsel temelden başka bir dil olduğu gerçeğini değiştirmiyor.
fretje

4
@j_random_hacker Bu durumda, neredeyse MS VB.Net'e en azından görsel stüdyo vb sayfasına dayanan bir VB varyantı muamelesi yapıyor gibi geliyor - ki bu doğru olmaz. İşin garibi, bu wiki makalesi yüzünde MS görsel stüdyo sayfasından daha fazla bilgi sunuyor :) en.wikipedia.org/wiki/Visual_Basic_.NET . Bununla birlikte, bir MSDN forumu sorusu en azından farklılıklara
değiniyor gibi

41

Eski bir soruya daha teknik ve kapsamlı bir cevap: Uygulamalar için Visual Basic (VBA) ve Visual Basic (pre.NET) sadece benzer diller değil aynı dillerdir. özellikle:

  • Aynı spesifikasyona sahiptirler : Dilin ne içerdiğinin ve ne anlama geldiğinin uygulamadan bağımsız açıklaması. Burada okuyabilirsiniz: [MS-VBAL]: VBA Dil Özellikleri
  • Her ikisi de aynı platforma sahiptir : Her ikisi de dll msvbvm [x.0] .dll dosyasında uygulanan aynı sanal makine tarafından yürütülen Microsoft P-Code'u derler.

Bir In ben rastladım eski VB referans kitabı 'VBA' daima dilin kendisinin adı olmuştur geçen yıl, yazar (Paul Lomax) bile tek başına uygulamalarda veya MS Office gibi gömülü bağlamlarda (kullanılan olsun, iddia ):

"Daha ileri gitmeden önce, sadece temel noktaya açıklığa kavuşalım. Uygulamalar için Visual Basic (VBA), Visual Basic'te (VB) programlamak için kullanılan dildir. VB'nin kendisi bir geliştirme ortamıdır; bu ortamın dil öğesi VBA'dır. "

Küçük farklılıklar

Barındırılan veya bağımsız : Pratik olarak, çoğu kişi "VBA" derken özellikle "MS Office'te kullanıldığında VBA" anlamına gelir ve "VB6" derken "bağımsız VBA'nın son sürümünde kullanılan VBA" anlamına gelir. derleyici (yani Visual Studio 6) ". MSE ile birlikte gelen IDE ve derleyici Visual Studio 6 ile hemen hemen aynıdır, sınırlama tek başına dll veya exe dosyalarına derlemeye izin vermez. Bu sırayla, gömülü VBA projelerinde tanımlanan sınıflara gömülü olmayan COM tüketicilerinden erişilemediği anlamına gelir, çünkü bunlar tescil edilemez.

Devam eden geliştirme : Microsoft, Visual Studio 6 ile bağımsız bir VBA derleyicisi üretmeyi bıraktı, çünkü bunlar tercih edilen platform olarak .NET çalışma zamanına geçti. Ancak, MS Office ekibi VBA'yı korumaya devam eder ve hatta MS Office 2010 ile başlayan yeni bir VM (şimdi VBA7.dll olarak adlandırılır) ile yeni bir sürüm (VBA7) yayınladı. Tek büyük fark, VBA7'nin hem 32- ve 64 bit sürümünde ve özellikle harici API çağrılarıyla ilgili olarak ikisi arasındaki farkları ele almak için birkaç geliştirmeye sahiptir.


2
Lomax'ın kitabındaki aynı alıntıyı hatırlıyorum, ancak bu forumdaki, Wikipedia'daki vb.Gibi diğer tüm ifadeler verildiğinde, kimin doğru olduğunu ve neden anlaşmazlık olduğunu merak ediyor! Lomax ayrıca (s. 3), "VBA, ister VB uygulaması oluşturmak için ister Word veya Excel'de bazı görevleri otomatikleştirmek için kullansanız da aynı dildir." Ayrıca, "VBA, barındırılan bir dildir ve VB geliştirme araçları ailesinin bir parçasıdır."
EJ Mak

1
VB6'da yardım seçerseniz VBA dil referansına gidersiniz. Word gibi VB6 da VBA dilini barındırıyor. Uygulama nesneleri genel nesneler olduğundan (Otomasyon standardı). VB6, bağımsız programlar için uygun bir Uygulama nesnesi sağlar. Word, Word makroları için bir Uygulama nesnesi sağlar. Dilin aynı olduğuna dikkat edin, eksik olan şeylere yapılan herhangi bir referans, VB6 yazıcı nesnesi gibi sağlanan nesneleri barındırmak içindir - dilin bir parçası değil, ana bilgisayarın.
ACatInLove

15

VBA'yı VB-Classic (VB6 ..) veya VB.NET ile karşılaştırmak ister misiniz?

VBA (Visual Basic for Applications), Microsoft Office uygulamalarına katıştırılmış vb klasik tabanlı bir komut dosyasıdır. Bence dil özellikleri VB5'inkine benzer (sadece birkaç yerleşik fonksiyondan yoksun), ama:

VBA-betiğini yazdığınız ofis belgesine erişiminiz var, böylece

  • Makrolar yazın (= ofis çalışmalarınızda çok az yinelenen görevler için otomatik rutinler)
  • Excel hücre formülü için yeni işlevler tanımlama
  • Ofis verilerini işleme

Örnek: Bir excel hücresinin değerini ayarlama

ActiveSheet.Cells("A1").Value = "Foo"

VBC ve -.NET komut dosyası dili değildir. Bunları, VBA ile yapamayacağınız ayrı IDE'lerle bağımsız uygulamalar yazmak için kullanırsınız (VBA komut dosyaları Office'te "var")

VBA'nın VB.NET ile ilgisi yoktur (sadece benzer bir sözdizimine sahiptir).


11

Aslında VBA DLL'leri derlemek için kullanılabilir. Office 2000 ve Office XP Developer sürümleri, DLL'leri COM Eklentileri olarak kullanmak için kullanılabilecek bir VBA düzenleyicisi içeriyordu.

Bu işlevsellik daha sonraki sürümlerde (2003 ve 2007) VSTO (VS Tools for Office) yazılımının ortaya çıkmasıyla kaldırılmıştır, ancak açıkçası VSTO (veya VS.Net) kullanmadan benzer bir şekilde COM eklentileri oluşturabilirsiniz. VB6 IDE kullanarak.


10
Bu işlev kaldırılmadı. Microsoft daha sonraki sürümleri desteklemek için "Office XP Developer" uygulamasını güncellemedi. Yine de geliştiriciyi yükleyebilirsiniz ve sorunsuz çalışır. Microsoft tarafından desteklenmiyor. Bunun nedeni, 2003/2007 ile birlikte gelen VBA'nın hala XP / 2002 ile aynı VBA sürümü olmasıdır.
AMissico

6

Bu VBA. VBA, Visual Basic for Applications anlamına gelir ve Office belgelerindeki makrolar için kullanılır. VB.NET özelliklerine erişimi yoktur, bu nedenle daha çok VB6'nın değiştirilmiş bir sürümü gibi, belge üzerinde çalışabilecek eklentiler (Excel için VBA'daki Çalışma Sayfası gibi).


7
Hayır, VBA VB5 / 6'nın değiştirilmiş bir sürümü değil, bir alt kümedir. VB5 / 6 IDE'deki Nesne Tarayıcısına bir bakın, orada kullanmak ve kötüye kullanmak için tam VBA nesne kitaplığını göreceksiniz. Bununla birlikte, VBA'nın (genellikle zorunlu olmamakla birlikte) varsayılan olarak yüklenen ve varsayılan olarak ana ortam ortamı ile ilgili olan genel nesneler sağlayan ek nesne kitaplıkları vardır.
Karl E. Peterson

5

VB bir dil değildir . VB, Office'in VBA'ya ev sahipliği yaptığı gibi VBA'yı da barındıran bir programdır. VB, Word ve Excel'deki gibi bir dizi App nesnesi ve Office'teki gibi bir form paketidir.

Böylece VBA kodunu sadece VB'ye yazabilirsiniz.

Not: Bu bilgi VB için VB soru sayfasındaki INFO sekmesinde yer almaktadır .

VBA Bilgilerinden

VBA 6, 1998 yılında sevk edildi ve aralarında sayısız lisanslı ana bilgisayar içeriyor: Office 2000-2010, AutoCAD, PI Processbook ve tek başına Visual Basic 6.0


3
Bu cevap gayet yanlış. VBA VB6 değildir, bunlar birçok özelliği paylaşan farklı varlıklardır. Bu kısa alıntı hiçbir şeyi kanıtlamaz. Bunun bir dil olmadığını söylemek, çünkü bir ana bilgisayarda çalıştığı için JavaScript gibi dilleri de dillerin dışında kılar, ki bu doğru değildir. Ayrıca, VB6 programları tek başına programlara derlenebilir, bu da onları herhangi bir ana bilgisayar gerektirmez (Windows dışında).
Erik A

@ErikA Hayır, ne söylediklerini yanlış anladınız. VB6'daki gibi VB, Office uygulamalarında olduğu gibi VBA çalıştıran Ana Bilgisayar Uygulamasıdır. VB6 sadece stand-alon oluşturmak için ikili dosyaları serbest bırakmanızı sağlayan bir uygulama olur. Yukarıda detayları açıklayan başka cevaplar da var.
typedef Miles_Williams MILO

4

VBA, Visual Basic For Applications ve Office Suite'te kullanılması amaçlanan bir Visual Basic uygulaması anlamına gelir.

Aralarındaki fark, VBA'nın Office belgelerine gömülmüş olmasıdır (bir Office özelliği). VB, uygulamaları geliştirmek için kullanılan bir dildir.


1

VB (yalnızca Visual Basic 6.0'a kadar), VBA'nın (Uygulamalar için Visual Basic) bir üst kümesidir. Başkalarının buna bir şekilde el koyduğunu biliyorum, ancak benim anlayışım, VBA'nın anlambiliminin (yani kelime hazinesi) VB6'ya (Office ürünlerine özgü nesneler hariç) dahil edildiğinden, VBA'nın bir VB6 alt kümesidir. Sözdizimi (yani kelimelerin yazıldığı sıra) VBA'da VB6'da olduğu gibi tamamen aynıdır, ancak fark VBA veya VB6 için mevcut nesneler farklıdır, çünkü farklı amaçları vardır. Özellikle VBA'nın amacı MS Office'te yapılabilecek görevleri programlı olarak otomatikleştirmektir, oysa VB6'nın amacı tek başına veya MS Office veya Windows gibi diğer programlarda çalışabilen standart EXE, ActiveX Denetimleri, ActiveX DLL'leri ve ActiveX EXE'leri oluşturmaktır.


VB6, VBA dilini barındırır. Aynı. VB6, ana bilgisayar olarak, barındırma sırasında Word gibi belirli nesneler sağlar.
ACatInLove
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.