Visual Basic for Applications Kullanma Kılavuzu

Visual Basic'in en seçkin özelliklerinden biri, tamamlayınız geliştirme ortamı. Ne yapmak istiyorsanız, işinizi yapmanıza yardımcı olacak bir Visual Basic 'lezzeti' var! Visual Basic'i masaüstü ve mobil ve uzaktan geliştirme (VB.NET), komut dosyası oluşturma (VBScript) ve Office geliştirme (VBA !) VBA'yı denediyseniz ve nasıl kullanılacağı hakkında daha fazla bilgi edinmek istiyorsanız, bu senin için öğretici. (Bu kurs, Microsoft Office 2010'da bulunan VBA sürümüne dayanmaktadır.)

Microsoft Visual Basic .NET'te bir kurs arıyorsanız, doğru yeri de buldunuz. Çıkış: Visual Basic .NET 2010 Express - Bir "Sıfırdan" Eğitimi

Genel bir kavram olarak VBA bu makalede ele alınacaktır. VBA'da düşündüğünüzden daha fazlası var! Office VBA kız kardeşleri hakkında makaleler de bulabilirsiniz:

Office uygulamalarıyla çalışabilecek programlar geliştirmenin temel olarak iki yolu vardır: VBA ve VSTO. Ekim 2003'te Microsoft, Visual Studio .NET'in Visual Studio Tools for Office - VSTO adlı profesyonel programlama ortamını geliştirdi. Ancak VSTO, Office'teki .NET'in önemli avantajlarından yararlansa da, VBA, VSTO'dan daha popüler olmaya devam ediyor. VSTO, Office uygulamasına ek olarak, muhtemelen kullandığınız Office uygulamasından daha pahalıya mal olacak Visual Studio'nun Professional veya daha yüksek sürümünün kullanılmasını gerektirir. Ancak VBA, ana Office uygulamasıyla entegre olduğundan başka bir şeye ihtiyacınız yoktur.

instagram viewer

VBA, öncelikle çalışmalarını daha hızlı ve daha kolay hale getirmek isteyen Office uzmanları tarafından kullanılır. VBA'da yazılan büyük sistemleri nadiren görürsünüz. Öte yandan VSTO, büyük organizasyonlardaki profesyonel programcılar tarafından oldukça sofistike olabilen Eklentiler oluşturmak için kullanılır. Word için bir kağıt şirketi veya Excel için bir muhasebe firması gibi üçüncü bir tarafın başvurusunun VSTO kullanılarak yazılması daha olasıdır.

Belgelerinde Microsoft, VBA'yı kullanmanın temel olarak üç nedeni olduğunu belirtiyor:

-> Otomasyon ve Tekrar - Bilgisayarlar aynı şeyi insanlardan çok daha iyi ve daha hızlı yapabilir.

-> Kullanıcı Etkileşimine İlişkin Uzantılar - Birinin bir belgeyi nasıl biçimlendirmesi veya dosyayı kaydetmesi gerektiğini tam olarak söylemek ister misiniz? VBA bunu yapabilir. Birinin ne girdiğini doğrulamak ister misiniz? VBA bunu da yapabilir.

-> Office 2010 Uygulamaları arasındaki etkileşim - Bu serinin sonraki makalelerine Word ve Excel Birlikte Çalışma adı verilir. Ancak ihtiyacınız olan şey buysa, dikkate almak isteyebilirsiniz Ofis otomasyonu, yani, sistemi VB.NET kullanarak yazma ve ardından gerektiği gibi Word veya Excel gibi bir Office uygulamasındaki işlevleri kullanma.

Microsoft, VBA'yı desteklemeye devam edeceklerini ve Resmi Microsoft Office 2010 Geliştirme Yol Haritası. Dolayısıyla, Microsoft'un VBA geliştirmeye yaptığınız yatırımın yakın gelecekte kullanılmayacağına dair güvenceye sahipsiniz.

Öte yandan VBA, VB6 "COM" teknolojisine bağlı kalan son Microsoft ürünüdür. Şimdi yirmi yaşından büyük! İnsan yıllarında bu, Vampir Lestat'tan daha yaşlı hale gelecektir. Bunu "denenmiş, test edilmiş ve doğru" olarak görebilirsiniz ya da "eski, yıpranmış ve eski" olarak düşünebilirsiniz. İlk açıklamayı tercih etme eğilimindeyim ama gerçeklerin farkında olmalısınız.

Anlaşılması gereken ilk şey, VBA ile Word ve Excel gibi Office uygulamaları arasındaki ilişkidir. Office uygulaması evsahibi VBA için. Bir VBA programı asla kendi başına yürütülemez. VBA, ana bilgisayar ortamında ( Geliştirici sekmesi) ve Word belgesinin, Excel çalışma kitabının, Access veritabanının veya başka bir Office ana bilgisayarının bir parçası olarak yürütülmelidir.

VBA'nın gerçekte kullanım şekli de farklı. Word gibi bir uygulamada VBA, öncelikle Word'ün Word'üyle bir belgedeki paragraflara erişmek gibi ana bilgisayar ortamının nesnelerine erişmenin bir yolu olarak kullanılır. Belge. Paragraf nesnesi. Her ana bilgisayar ortamı, diğer ana bilgisayar ortamlarında bulunmayan benzersiz nesnelere katkıda bulunur. (Örneğin, bir Word belgesinde "çalışma kitabı" yoktur. Bir çalışma kitabı Excel'e özgüdür.) Visual Basic kodu esas olarak her Office ana bilgisayar uygulaması için özelleştirilmiş nesneleri kullanmayı mümkün kılmak için vardır.

VBA ve ana bilgisayara özgü kod arasındaki füzyon bu kod örneğinde görülebilir (Microsoft'tan alınmıştır) Northwind örnek veritabanı) yalnızca VBA kodunun kırmızı renkte ve Access'e özgü kodun mavi. Kırmızı kod Excel veya Word'de aynı olacaktır, ancak mavi kod bu Access uygulamasına özgüdür.

VBA'nın kendisi neredeyse yıllardır aynı. Ana Office uygulaması ve Yardım sistemi ile entegrasyon yöntemi daha da geliştirildi.

Office'in 2010 sürümü varsayılan olarak Geliştirici sekmesini görüntülemez. Geliştirici sekmesi sizi uygulamanın VBA programlarını oluşturabileceğiniz bölümüne götürür, böylece yapmanız gereken ilk şey bu seçeneği değiştirmektir. Dosya sekmesi, Seçenekler, Şeridi Özelleştir'e gidin ve Ana Sekmelerdeki Geliştirici kutusunu tıklayın.

Yardım sistemi, önceki sürümlerde olduğundan çok daha sorunsuz çalışır. VBA sorularınız için çevrimdışı, Office uygulamanızla birlikte yüklenen bir sistemden veya İnternet üzerinden Microsoft'tan çevrimiçi yardım alabilirsiniz. İki arayüz birbirine çok benzeyecek şekilde tasarlanmıştır:


Resmi görüntülemek için Buraya tıklayın

İnternet bağlantınız hızlıysa, çevrimiçi yardım size daha fazla ve daha iyi bilgi verecektir. Ancak yerel olarak yüklenmiş sürüm muhtemelen daha hızlı olacaktır ve çoğu durumda aynı derecede iyidir. Yerel yardımı varsayılan yapmak ve ardından yerel sürüm size istediğiniz şeyi vermezse çevrimiçi yardımı kullanmak isteyebilirsiniz. Çevrimiçi olmanın en hızlı yolu, yardımdaki Arama açılır menüsünden "Tüm Kelime" (veya "Tüm Excel" veya başka bir uygulama) seçmektir. Bu hemen çevrimiçi olur ve aynı aramayı yapar, ancak varsayılan seçiminizi sıfırlamaz.


Resmi görüntülemek için Buraya tıklayın

Bir sonraki sayfada, aslında bir VBA programının nasıl oluşturulacağı ile başlıyoruz.

VBA, Word veya Excel gibi bir uygulama tarafından "barındırıldığında", program, ana bilgisayar tarafından kullanılan belge dosyasında "yaşar". Örneğin, Word'de 'Word makronuzu' kaydedebilirsiniz ( değil bir 'makro', ancak şu anda terminoloji hakkında tartışmayacağız) bir Word belgesinde veya bir Word şablonunda.

Şimdi bu VBA programının Word'de oluşturulduğunu varsayalım (bu basit program yalnızca yazı tipini seçilen bir satır için kalın olacak şekilde değiştirir) ve bir Word belgesine kaydedilir:

Sub AboutMacro () ' Makro Hakkında. Makro 9/9/9999 Dan Mabbutt tarafından kaydedildi. ' Seçim. Ana SayfaKey Birimi: = wdStory. Seçim. EndKey Birimi: = wdLine, Genişlet: = wdExtend. Seçim. Yazı tipi. Kalın = wdToggle. Seçim. EndKey Birimi: = wdStory. End Sub.

Office'in önceki sürümlerinde, belgenin bir parçası olarak depolanan VBA kodunu açıkça görebilirsiniz Word belgesindeki her şeyin yapabileceği Not Defteri'nde görüntüleyerek kaydedilmiş Word belgesindeki dosyayı görüldü. Microsoft, geçerli sürümdeki belge biçimini değiştirdiği ve VBA program kodu artık düz metin olarak net bir şekilde görünmediği için, bu örnek Word'ün önceki bir sürümüyle üretildi. Ama müdür aynı. Benzer şekilde, bir "Excel makrosu" içeren bir Excel e-tablosu oluşturursanız, .xlsm dosyasının bir parçası olarak kaydedilir.


Resmi görüntülemek için Buraya tıklayın

VBA ve Güvenlik

Geçmişteki en etkili bilgisayar virüsü hilelerinden biri, bir Office belgesine kötü amaçlı VBA kodu eklemekti. Office'in önceki sürümlerinde, bir belge açıldığında virüs otomatik olarak çalışabilir ve makinenize zarar verebilir. Office'teki bu açık güvenlik açığı Office satışlarını etkilemeye başlamıştı ve bu da Microsoft'un dikkatini çekti. Mevcut 2010 nesil Office ile Microsoft deliği iyice tıkadı. Burada belirtilen geliştirmelere ek olarak, Microsoft, Office güvenliğini donanım düzeyine kadar fark etmeyebileceğiniz şekilde geliştirmiştir. Güvenli olmadığını duyduğunuz için VBA kullanmaktan çekiniyorsanız, Microsoft'un şimdi değiştirmek için ekstra yol kat ettiğinden emin olun.

En önemli değişiklik, yalnızca VBA programlarını içeren Office belgeleri için özel bir belge türü oluşturmaktı. Örneğin, Word'de, "docx" dosya uzantısıyla kaydedilmiş bir dosyadaki programlara izin vermediğinden, MyWordDoc.docx bir VBA programı içeremez. Dosyanın bir parçası olarak VBA programlamasına izin verilebilmesi için dosyanın "MyWordDoc.docm" olarak kaydedilmesi gerekir. Excel'de dosya uzantısı ".xlsm" dir.

Bu gelişmiş belge türüyle birlikte Microsoft, Office'te Güven Merkezi adlı yeni bir güvenlik alt sistemi oluşturdu. Temel olarak, Office uygulamanızın VBA kodu içeren belgelere ayrıntılı olarak nasıl davranacağını özelleştirebilirsiniz. Güven Merkezi'ni şeridin Kod bölümünde Makro Güvenliği'ni tıklatarak Office uygulamanızın Geliştirici sekmesinden açarsınız.


Resmi görüntülemek için Buraya tıklayın

Bazı seçenekler Office uygulamalarınızı "sertleştirmek" için tasarlanmıştır, böylece kötü amaçlı kod çalışmaz ve diğerleri geliştiricilerin ve kullanıcıların güvenliği gereksiz yere yavaşlatmadan VBA'yı kullanmalarını kolaylaştırmak için tasarlanmıştır aşağı. Gördüğünüz gibi, güvenliği özelleştirmenin birçok yolu vardır ve bunların hepsinden geçmek bu makalenin kapsamının çok ötesindedir. Neyse ki, Microsoft'un sitesinde bu konuda kapsamlı belgeler var. Ayrıca, varsayılan güvenlik ayarlarının çoğu gereksinim için iyi olması da şanslıdır.

VBA, ana Office uygulamasına bağlı olduğundan, orada çalıştırmanız gerekir. Bu konu bir sonraki sayfadan başlayarak ele alınmaktadır.

VBA Uygulamasını Nasıl Çalıştırırım

Bu aslında çok iyi bir soru çünkü uygulamanızın kullanıcılarının ilk soracağı soru bu. Temel olarak iki yol vardır:

-> Programı başlatmak için Düğme gibi bir denetim kullanmamaya karar verirseniz, şeritteki Makrolar komutunu kullanmanız gerekir (Geliştirici sekmesi, Kod grubu). VBA programını seçin ve Çalıştır'a tıklayın. Ancak bu, bazı kullanıcılarınız için biraz fazla görünebilir. Örneğin, Geliştirici sekmesinin onlar tarafından kullanılabilir olmasını istemeyebilirsiniz. Bu durumda ...

-> Kullanıcının uygulamayı başlatmak için tıklayabileceği veya yazabileceği bir şey eklemeniz gerekir. Bu makalede, Düğme kontrolüne bakacağız. Ancak bir kısayolu, araç çubuğundaki bir simgeyi veya hatta veri girme eylemini tıklayabilir. Bunlara denir Etkinlikler ve bu ve sonraki makalelerde yazacağımız şey olay kodu - Düğme kontrolü tıklamak gibi belirli bir olay gerçekleştiğinde otomatik olarak çalışan program kodu.

UserForms, Form Denetimleri ve ActiveX Denetimleri

Sadece bir makro seçmiyorsanız, bir VBA programını çalıştırmanın en yaygın yolu bir düğmeyi tıklamaktır. Bu düğme ya form kontrolü veya bir ActiveX denetimi. Seçimleriniz bir dereceye kadar kullandığınız Office uygulamasına bağlıdır. Örneğin Excel, Word'den biraz farklı seçenekler sunar. Ancak bu temel kontrol türleri aynıdır.

En fazla esnekliği sunduğu için Excel 2010 ile neler yapabileceğinize bakalım. Farklılıkları daha net hale getirmek için birkaç farklı düğme tıklandığında hücreye basit bir kısa mesaj eklenir.

Başlamak için yeni bir Excel çalışma kitabı oluşturun ve Geliştirici sekmesini seçin. (Başka bir Office uygulamanız varsa, bu yönergelerin bir varyasyonu çalışmalıdır.)

Ekle simgesini tıklayın. İlk önce Form Denetimleri düğmesiyle çalışacağız.

Form kontrolleri eski teknolojidir. Excel'de, ilk olarak 1993'te 5.0 sürümünde tanıtıldı. Daha sonra VBA UserForms ile çalışacağız, ancak form kontrolleri onlarla kullanılamaz. Ayrıca web ile uyumlu değildir. Form kontrolleri doğrudan çalışma sayfası yüzeyine yerleştirilir. Öte yandan, bundan sonra ele alacağımız bazı ActiveX denetimleri doğrudan çalışma sayfalarında kullanılamaz.

Form kontrolleri "tıkla ve çiz" tekniği ile kullanılır. Düğme formu denetimini tıklatın. Fare işaretçisi artı işaretine dönüşecektir. Yüzeyi sürükleyerek kontrolü çizin. Fare düğmesini bıraktığınızda, düğmeye bağlanmak için bir makro komutu isteyen bir iletişim kutusu açılır.


Resmi görüntülemek için Buraya tıklayın

Özellikle ilk kez bir kontrol oluştururken, kontrol cihazına bağlanmayı bekleyen bir VBA makronuz olmayacaktır. düğmesini tıkladığınızda Yeni'yi tıklayın; VBA Düzenleyicisi, önerilen ad bir etkinliğin kabuğuna önceden doldurulmuş olarak açılır altyordamı.


Resmi görüntülemek için Buraya tıklayın

Bu çok basit uygulamayı tamamlamak için, bu VBA kod deyimini Sub içine yazmanız yeterlidir:


Hücreler (2, 2) .Value = "Form Düğmesi Tıklandı"

Bir ActiveX düğmesi hemen hemen aynıdır. Bir fark, VBA'nın bu kodu ayrı bir modüle değil, çalışma sayfasına yerleştirmesidir. İşte tam olay kodu.

Özel Alt KomutDüğmesi1_Click () Hücreler (4, 2) .Value = "ActiveX Düğmesi Tıklandı" End Sub.

Bu denetimleri doğrudan çalışma sayfasına yerleştirmenin yanı sıra, UserForm projeye yönlendirin ve bunun yerine kontroller yapın. UserForms - Windows formlarıyla aynı şeydir - denetimlerinizi normal bir Visual Basic uygulaması gibi yönetebilmenin birçok avantajı vardır. Visual Basic düzenleyicisinde projeye bir UserForm ekleyin. Görünüm menüsünü kullanın veya Project Explorer'da sağ tıklatın.


Resmi görüntülemek için Buraya tıklayın

Bir UserForm için varsayılan değil formu görüntüle. Bu nedenle, görünür hale getirmek (ve üzerindeki denetimleri kullanıcı tarafından kullanılabilir hale getirmek) için formun Göster yöntemini yürütün. Sadece bunun için başka bir form düğmesi ekledim.

Alt Düğme2_Click () UserForm1.Show. End Sub.

UserForm olduğunu fark edeceksiniz kip varsayılan olarak. Bu, form etkin olduğunda, uygulamadaki diğer her şeyin etkin olmadığı anlamına gelir. (Örneğin, diğer düğmelere tıklamak hiçbir şey yapmaz.) UserForm ShowModal özelliğini False olarak değiştirerek bunu değiştirebilirsiniz. Ama bu bizi programlamaya daha da derinleştiriyor. Bu dizinin sonraki makaleleri bunun hakkında daha fazla bilgi verecektir.

UserForm kodu UserForm nesnesine yerleştirilir. Project Explorer'daki tüm nesneler için Kodu Görüntüle'yi seçerseniz, üç farklı nesnede bulunan üç ayrı Click olay alt yordamı olduğunu görürsünüz. Ancak hepsi aynı çalışma kitabında kullanılabilir.


Resmi görüntülemek için Buraya tıklayın

VBA, bir düğmeyi tıklatarak bir etkinliği zorlamanın yanı sıra, barındırma uygulamasındaki nesnelerdeki olaylara tepki vermek için de kullanılır. Örneğin, Excel'de bir e-tablonun ne zaman değiştiğini tespit edebilirsiniz. Veya Access'te bir veritabanına ne zaman bir satır eklendiğini algılayabilir ve o olayı işlemek için bir program yazabilirsiniz.

Programlarda her zaman gördüğünüz tanıdık komut düğmeleri, metin kutuları ve diğer bileşenlere ek olarak, aslında Excel e-tablonuzun bir parçası olan bileşenler ekleyebilirsiniz içinde Word belgeniz. Ya da tersini yapın. Bu, "kopyala ve yapıştır" ın ötesine geçer. Örneğin, Word belgesinde bir Excel elektronik tablosu gösterebilirsiniz.

VBA, bir Office uygulamasının tüm gücünü başka bir uygulamada kullanmanızı sağlar. Örneğin, Word yerleşik olarak nispeten basit bir hesaplama yeteneğine sahiptir. Ama Excel - iyi - hesaplamada "excels". Word belgenizde Gama işlevinin doğal günlüğünü (nispeten karmaşık bir matematik hesaplaması) kullanmak istediğinizi varsayalım? VBA ile, değerleri Excel'deki bu işleve iletebilir ve yanıtı Word belgenizde geri alabilirsiniz.

Ve Office uygulamalarından çok daha fazlasını kullanabilirsiniz! "Diğer Denetimler" simgesini tıklarsanız, bilgisayarınızda yüklü olan şeylerin önemli bir listesini görebilirsiniz. Bunların hepsi "kutudan çıkarılmış" değildir ve her biri için belgelere sahip olmanız gerekir, ancak VBA için desteğin ne kadar geniş olduğu hakkında bir fikir verir.

VBA'daki tüm özelliklerden, diğerlerinden daha yararlı olan bir özellik var. Bir sonraki sayfada ne olduğunu öğrenin.

En iyisini sonuna kadar sakladım! İşte tüm Office uygulamalarına tahta üzerinde uygulanan bir teknik. Kendinizi çok kullanırken bulacaksınız, bu yüzden burada Giriş bölümünde yer alıyoruz.

Daha karmaşık VBA programlarını kodlamaya başladığınızda, karşılaşacağınız ilk sorunlardan biri Office nesnelerinin yöntemleri ve özellikleri hakkında bilgi edinmektir. Bir VB.NET programı yazıyorsanız, bu sorunu çözmek için genellikle kod örnekleri ve örnekler ararsınız. Ancak, tüm farklı barındırma uygulamalarını ve bunların her birinin yüzlerce yeni nesneye sahip olduğunu düşündüğünüzde, genellikle yapmanız gerekenle tam olarak eşleşen bir şey bulamazsınız.

Cevap "Makro Kaydet ..."

Temel fikir "Makro Kaydet" i açmak, programınızın gerçekleştirmesini istediğinize benzer bir işlemin adımlarını uygulamak ve ardından ortaya çıkan VBA programında kod ve fikirler olup olmadığını kontrol etmektir.

Birçok kişi tam olarak ihtiyacınız olan programı kaydedebilmeniz gerektiğini düşünerek hata yapar. Ancak bu kadar kesin olmak gerekli değildir. Genellikle istediğinize "yakın" olan bir VBA programını kaydetmek ve işi tam olarak yapmak için kod değişikliklerini eklemek genellikle yeterlidir. O kadar kolay ve kullanışlı ki, bazen kod farklılıklarının sonuçta ne olduğunu görmek için küçük farklılıklar içeren bir düzine program kaydedeceğim. Onlara bakmayı bitirdiğinizde tüm deneyleri silmeyi unutmayın!

Örnek olarak, Word Visual Basic Düzenleyicisi'nde Makro Kaydet'i tıklattım ve birkaç metin satırı yazdım. İşte sonuç. (Onları kısaltmak için satır devamları eklendi.)

Alt Makro1 () ' 'Makro1 Makro. ' ' Seçim. Metin Türü: = _. "Bu zamanlar" Seçim. Metin Türü: = _. "erkeklerin ruhlarını dene. " Seçim. Metin Türü: = _. "yaz askeri" Seçim. Metin Türü: = _. "ve güneş vatansever" Seçim. Metin Türü: = _. "bu zamanlarda küçülecek" Seçim. Metin Türü: = _. "ülkelerinin hizmeti." Seçim. Taşıma Birimi: = wdLine, Sayı: = 1. Seçim. HomeKey Birimi: = wdLine. Seçim. MoveRight Birimi: = wdKarakter, _. Sayı: = 5, Uzat: = wdExtend. Seçim. Yazı tipi. Kalın = wdToggle. End Sub.

Kimse VBA'yı sadece kendisi için incelemiyor. Her zaman belirli bir Office uygulamasıyla birlikte kullanırsınız. Bu nedenle, öğrenmeye devam etmek için, burada hem Word hem de Excel ile kullanılan VBA'yı gösteren makaleler var:

-> VBA Kullanmaya Başlama: Word Çalışma Ortağı

-> VBA Kullanmaya Başlama: Excel Çalışma Ortağı