Excel örneklerinde otomasyon. Microsoft Excel belgelerinde işin otomasyonu. Hızlı Erişim Araç Çubuğunda Bir Makro Düğmesi Oluşturun

  • 31.10.2019

Makrolar, Excel'de zaman alan veya tekrarlayan görevleri otomatikleştirmek için kullanılır. Makro tek bir ad altında saklanan bir dizi komut ve eylemdir. Bir makro iki şekilde oluşturulabilir: 1) eylemleri otomatik olarak kaydedin; 2) VBA düzenleyicide bir prosedür geliştirin.

Mutlak referanslarla ve göreli referanslarla bir makro kaydedebilirsiniz. Göreli başvurulara sahip bir makro, makronun başlangıcından önce geçerli olan hücreden başlayarak yürütülür. Mutlak referansları olan bir makro, makro kaydedilirken kullanılan hücrelerde çalışır.

Makrolar ve kontrollerle çalışmak için sekmeyi kullanın geliştirici(Şekil 7.1). Araç şeridinde böyle bir sekme yoksa, aşağıdaki gibi etkinleştirmeniz gerekir:

Office düğmesine basın, düğmesine tıklayın ;

onay kutusu Şeritte Geliştirici sekmesini göster.

Kayıt düğmeye bastıktan sonra makro başlar Makro kaydı. Kayıt yöntemi, düğmenin durumuna göre belirlenir göreceli bağlantılar. Düğme etkinleştirilirse, makro, devre dışı bırakılmışsa - mutlak olanlarla göreli bağlantılarla kaydedilir.


Pirinç. 7.1. Yer imi geliştirici alet bantları

Verim Makro, bir klavye kısayoluna, araç çubuğu düğmesine, form denetimine veya çalışma sayfasındaki bir grafik nesneye ayarlanabilir.

kaldırma makro iletişim kutusunda üretilir makrolar, bir düğme ile açılan makrolar yer iminde geliştirici.Listeden gerekli makroyu seçin ve düğmesine basın. Silmek. Aynı iletişim kutusunda, makroyu yürütmenin başka bir yolu belirtilmemişse, seçilen makroyu yürütme için çalıştırabilirsiniz.

Excel, şablon doldurmayı otomatikleştirmek için form denetimlerini ve ActiveX denetimlerini kullanır. Kontrol elemanı kullanıcının uygulamayı kontrol etmesini sağlayan grafiksel bir nesnedir. Bir kontrol oluşturmak için düğmeyi genişletmeniz gerekir. Sokmak(Şek. 7.1), gerekli elemanı seçin ve fare ile çalışma sayfasında istenilen yere istenilen boyuta sürükleyin. Kontrol seçildiğinde, düğmesini kullanarak Özellikleri yer iminde geliştirici parametrelerini değiştirebilirsiniz (Şekil 7.6), örneğin, sayfanın herhangi bir hücresine bağlayabilirsiniz.


Pirinç. 7.2. Form kontrolleri

1. Grup - radyo düğmelerini gruplamak için kullanılan bir çerçeve.

2. Düğme - kendisine atanan makroyu yürütmek için kullanılır.

3. Onay kutusu - işaretliyse, işaretlenmemişse ilgili hücrede DOĞRU değeri görüntülenir - YANLIŞ.

4. Anahtar - her zaman grupta kullanılır. Radyo düğmeleri gruplandırıldığında, bunlardan yalnızca biri ayarlanabilir. Ardından, bu radyo düğmesi grubuyla ilişkili hücrede, seçilen radyo düğmesinin seri numarası görüntülenir.

5. Liste kutusu (a) ve Birleşik kutu (b) - önce hücrelere girmeniz gereken değerlerin bir listesini görüntüleyin ve ardından bu hücrelerin aralığını kontrolün parametrelerinde belirtin. Listede seçilen değerin numarası, listeyle ilişkili hücreye yerleştirilir.

6. Kaydırma çubuğu (a) ve Sayaç (b) - bunlarla ilişkili hücrenin değerini değiştirin. Kontrolün parametrelerinde, bu değeri değiştirme aralığını ve adımını ayarlayabilirsiniz.

Örnek 7.1. Geçerli hücreden başlayarak, geçerli hücreden sonraki altı ayın ilk günlerinin tarihlerini görüntüleyen ve onları ayın adı bir kelime olarak görüntülenecek şekilde biçimlendiren "Ayın ilk_günü" adlı bir makro yazın. , sola hizalama, metin rengi mavi, yazı tipi Courier New kalın .Makronun yürütülmesini bir otomatik şekle atayın.

Verim:

1. düğmesine basın Makro Kaydı yer iminde geliştirici.

2. Açılan iletişim kutusunda makronun adını ayarlayın - Ayın ilk_günü, bir klavye kısayolu ayarlayabilir ve ardından Tamam'a tıklayabilirsiniz. Bu, kaydı ve düğmeyi açacaktır. Makro Kaydı bir düğmeye dönüştürülecek Kaydetmeyi bırak(Şekil 7.3).

Pirinç. 7.3. Parça görünümüne yer işareti koy geliştirici makro kaydederken

4. Makronun gerçekleştirmesi gereken eylemleri gerçekleştirin:

Geçerli hücreye, geçerli olanı izleyen ayın ilk gününün tarihini döndürecek bir formül girin (geçerli tarih 05/15/06): =TARİH(YIL(BUGÜN());AY(BUGÜN( ))+1;1)

Girilen formülden başlayarak 6 hücre seçin, düğmeyi genişletin Doldurmak yer iminde ev ve bir takım seçin İlerleme…;

Açılan iletişim kutusunda Tip à Tarihler, Birimler à Ay'ı belirleyin.

İletişim kutusunu aç Hücre Biçimi...;

Yer imi Sayı sekmesinde GG AAA YYYY biçimini ayarlayın hizalamaà sekmede yatay olarak sola Yazı tipià yazı tipi - Courier New kalın, renk - mavi.

5. düğmesine basın Kaydetmeyi bırak(Şekil 7.3).

6. Çalışma sayfasında, sekmede seçerek herhangi bir otomatik şekli çizin Sokmak. Otomatik şekil bağlam menüsünde, komutu seçin Makro ata. Açılan iletişim kutusunda "ayın ilk_günü" makrosunu belirtin ve Tamam'ı tıklayın.

Pirinç. 7.4. "First_day_of_month" makrosunun yürütülmesinin sonucu

7. Herhangi bir hücreyi geçerli hale getirin ve otomatik şekle tıklayarak makroyu test edin (Şekil 7.4).

Örnek 7.2. Listeyi kullanarak işin adının B2 hücresinde görüntülendiği ve B3 hücresindeki saat sayısının kaydırma çubuğu kullanılarak doldurulduğu bir iş emri formu (Şekil 7.5) oluşturun.



Pirinç. 7.5. Form denetimleriyle bir form oluşturun.

Verim:

  1. Hücreleri, Şekil l'deki gibi verilerle doldurun. 7.5, B2, B3, E1 hücreleri hariç.
  2. Bir liste (Şekil 7.2, 5-a) ve bir kaydırma çubuğu (Şekil 7.2, 6-a) çizin.
  3. Oluşturulan kontrollerin parametrelerini değiştirin (Şekil 7.6). Kaydırma çubuğu B3 hücresiyle ilişkili olduğundan, kaydırma çubuğunun okuna tıklamak hücrenin değerini bir adım değiştirir - 1. Liste E1 hücresiyle ilişkilidir, bu nedenle hücrede "Tavan badana" değerini seçtiğinizde , listedeki bu değerin seri numarası görüntülenecektir - 3.

Pirinç. 7.6. Kaydırma çubuğu (sol) ve liste (sağ) seçenekleri.

  1. İşin numarasını değil, B2'de adını görüntülemek için, E1 hücresindeki listeden seçilen işin sayısına bağlı olarak, ikinci sütundan karşılık gelen değeri döndürecek olan DÜŞEYARA işlevini kullanmanız gerekir. tablo E2: F5. Dolayısıyla B2'deki formül şöyle olacaktır: =DÜŞEYARA(E1;E2:F5;2).

Yorum . ActiveX denetimlerini kullanarak bir kaydırma çubuğu ve liste kutusu oluşturabilir ve ardından şekilde gösterildiği gibi özelliklerini değiştirebilirsiniz:

Laboratuvar #7

Amaç: Excel'de çalışmayı otomatikleştirmek için makroları ve çalışma sayfası form denetimlerini nasıl oluşturacağınızı ve kullanacağınızı öğrenin.

Görevler:

BEN. Makroları kaydedin:

  1. Göreceli bağlantılar ile. Makro, geçerli hücreden başlayarak aşağıdaki biçimlendirmeyle ayların adlarını bir sütunda göstermelidir:

Karakter rengi - kırmızı,

Çerçeveleme hücreleri - ince bir çizgi,

Metin ortaya hizalanır,

Kolonun dış çerçevesi kalın bir çizgidir.

araç çubuğunda Formlar eleman seç Buton, çalışma sayfasına çizin, AY olarak adlandırın ve oluşturulan makroyu atayın.

  1. Mutlak bağlantılar ile. Makro, tüm çalışma sayfasını temizlemelidir. Çalışma sayfasında herhangi bir otomatik şekil çizin ve oluşturulan makroyu atayın.

3. Herhangi bir hücreye herhangi bir tarihi girin. Makro, girilen tarihten başlayarak, 10 hücreyi iş günleri için tarihlerle doldurmalı, bitişik iki sütundan 10 hücreyi temizlemeli ve şekilde gösterildiği gibi biçimlendirmelidir. Çalışma sayfasında herhangi bir otomatik şekil çizin ve oluşturulan makroyu atayın.

II. Form kontrolleriyle bir uçak bileti sipariş formunu doldurmak için bir şablon oluşturun:

1. Hücreleri C2:C4, C6 ve C13 hücreleri dışındaki verilerle doldurun ve form kontrollerini ekleyin:


2. Kontrollerin özelliklerini değiştirin:

2.1. İçin açılan kutular yazdırma devre dışı, hacim gölgeleme etkin, liste aralığa göre oluşturulur I3: I7, sonuç bir hücreye yerleştirilir G3, yani bu hücre, listede seçilen öğenin numarasını içerir.

2.2. İçin tezgah yazdırma devre dışı bırakılır, hacim gölgeleme etkinleştirilir, aralık 1'den 10'a kadar 1'lik artışlarla, sonuç bir hücreye yerleştirilir C6.

2.3. İçin anahtarlar yazdırma ve hacim gölgeleme etkinleştirilir, sonuç hücreye yerleştirilir G4. Anahtarlar şu şekilde gruplandırılmıştır: çerçeve.

2.4. İçin düğmeler yazdırma devre dışı.

3. Hücrelerde C2:C4 seçilen liste değerine bağlı olarak şehri, hareket saatini ve bilet fiyatını gösteren formüller yazın (DÜŞEYARA işlevini kullanarak).

4. Bir hücrede C13 bilet sayısına ve bilet türüne bağlı olarak ödenecek tutarı hesaplamak için bir formül yazın (tercihli - %30 indirim).

5. Kontrollerin ilişkili olduğu hücrelerden korumayı kaldırın.

6. Formülleri gizleyin.

7. Yardımcı verileri içeren sütunları gizleyin.

8. Oluştur ve düğmeye ata " Fok» yatay düzeni ve A5 kağıt boyutunu ayarlayan ve şablonu önizleme modunda görüntüleyen bir makro.

Konuyla ilgili güvenlik soruları

1. Şablonun doldurulmasını hangi yollarla otomatikleştirebilirsiniz?

3. Kontrolleri ve amaçlarını adlandırın.

4. Bir çalışma sayfasında bir kontrol nasıl oluşturulur ve parametreleri nasıl değiştirilir?

5. Bir makroyu yürütmenin yollarını adlandırın.


Edebiyat

1. Microsoft Office 2007: paketin tüm programları: Word, Excel, Access, PowerPoint, Publisher, Outlook, OneNote, InfoPath, Groove / Tikhomirov A.N. [ve diğerleri]. - St. Petersburg: Bilim ve teknoloji, 2009. - 599 s.

2. Microsoft Office Excel 2007: [Rusça versiyonu: İngilizce'den çevrilmiştir] / Curtis D. Fry. - Moskova: ECOM, 2009. - 479 s.

3. Yöneticiler ve ekonomistler için Excel 2007: lojistik, üretim ve optimizasyon hesaplamaları / Alexander Trusov. - St. Petersburg: Peter: Peter Press, 2009. - 254 s.

4. Excel 2007'de grafikler, hesaplamalar ve veri analizi / Serogodsky V. V. [ve diğerleri]. - St. Petersburg: Bilim ve teknoloji, 2009. - 333 s.

5. Excel 2007'deki fonksiyonlar: kullanım kılavuzu / Minko A.A. - Moskova: Eksmo, 2008. - 480 s.

6. Ekonomik bilişim / ed. PV Konyukhovsky ve D.N. Kolesova. - St. Petersburg: Peter, 2001. - 560 s.

7. Garnaev A.Yu. Ekonomi ve finansta Excel, VBA, İnternet. - St. Petersburg: BHV-Petersburg, 2001. - 816 s.

8. Dodge M., Kinata K., Stinson K. Excel 7.0 ile etkili çalışma: Per. İngilizceden. - St. Petersburg: Peter, 1996. - 1031 s.

9. Microsoft Excel'de ekonomik bilgilerin işlenmesi ve analizi: Ekonomik uzmanlık öğrencileri için bir kılavuz / D.P. Podkopaev, V.I. Yaşkin. - Mn.: BSU Yayınevi, 2001. - 50 s.

10. Microsoft Excel / Carlberg Konrad kullanarak iş analizi. - 2. baskı. - E.: Williams, 2003. - 446 s.

11. Excel / S. Roman'da makro kullanma. - 2. baskı. - St. Petersburg: Peter, 2004. - 507 s.

12. Goetz K., Gilbert M. Visual Basic ve VBA'da Programlama. Geliştirici kılavuzu: İngilizce'den çevrilmiştir. - K.: BHV Yayın Grubu, 2001. - 912 s.


Bu makale, yeni olmayabilecek bir konuya ayrılmıştır, ancak okuyuculardan gelen mektupların gösterdiği gibi, hala alakalı - Microsoft Office uygulamalarının otomasyonu. Projeleri üzerinde çalışma sürecinde olan birçok geliştirici (hangi geliştirme aracı olursa olsun - Delphi, C ++ Builder, Visual Basic :) genellikle Microsoft Office tarafından sağlanan, Microsoft Excel kullanarak pivot tablolar ve çizelgeler oluşturma, oluşturma ve yazdırma gibi hizmetleri kullanır. Microsoft Word vb. kullanan belgeler Çoğu zaman, günlük işlerinde Microsoft Office uygulamalarını kullanmaya alışmış olan kullanıcılar, bu tür hizmetleri uygulamalarda kullanmakta veya sadece raporları ve diğer belgeleri Microsoft Office formatlarından birinde kaydetmekte ısrar ediyorlar. Microsoft'un bu tür potansiyel isteklerinin uzun süredir dikkate alındığını unutmayın - herhangi bir Microsoft Office uygulamasının kullanıcısının menü, klavye ve araç çubuğunu kullanarak yapabileceği hemen hemen her şey otomatik olarak da yapılabilir, yani ya bir VBA programından veya geliştirme araçlarından biri kullanılarak oluşturulan uygulamadan. Başka bir deyişle, Microsoft Office uygulamaları programlanabilir. Programlanabilirlik, genel olarak belirli bir uygulamayı makro diller yardımıyla veya diğer uygulamaların yardımıyla kontrol etme yeteneği anlamına gelir. Microsoft Office'in tüm bileşenleri aynı makro dilini destekler: Doğrudan Office belgelerinin içinde uygulamalar oluşturmanıza olanak sağlayan Visual Basic for Applications (VBA).<решения на базе Microsoft Office>). Office bileşenlerinin diğer uygulamalardan yönetimi otomasyon (Otomasyon, eski adıyla OLE Otomasyonu) kullanılarak gerçekleştirilir - tüm Microsoft Office uygulamaları otomasyon sunucularıdır (veya COM sunucularıdır). Bu tür uygulamalar oluşturmak için otomasyon denetleyicileri (COM istemcileri) oluşturmanıza izin veren herhangi bir geliştirme aracı uygundur. Çoğu zaman bu amaç için Visual Basic kullanılır, ancak Delphi, C++Builder veya Visual C++ olabilir. Ancak, belirli geliştirme araçlarının olanaklarını tartışmadan önce, otomasyonun ne olduğunu anlamalısınız.

Otomasyon hakkında kısaca

Otomasyon, Microsoft COM (Bileşen Nesne Modeli) teknolojisinin sağladığı olanaklardan biridir. Bu teknolojinin uygulanmasının ayrıntılarına girmeden, uygulamalar (COM sunucuları olarak adlandırılır) tarafından nesnelerine ve bu nesnelerin özelliklerine ve yöntemlerine, diğer uygulamalara (COM istemcileri olarak adlandırılır) erişim sağlamak için kullanıldığını not ediyoruz. ), geliştirme araçları olabilir. Örneğin, bir COM sunucusu olan bir kelime işlemci, uygun nesneleri kullanarak diğer uygulamalara bir belgeye, paragrafa, yer işaretine erişim sağlayabilir. COM sunucularını adlandırmak (ve tanımlamak) için genellikle özel dizi tanımlamaları kullanılır - program tanımlayıcıları (Programatik Tanımlayıcı, ProgID). İşletim sisteminin, otomasyon sunucusu yürütülebilir dosyasının hangi dizinde (veya sunucuya şu veya bu uzaktan erişim yöntemi kullanılıyorsa, yerel ağdaki hangi bilgisayarda) bulunduğunu belirlemek için bu tanımlayıcıları kullanabilmesi için gereklidirler ve yürütmek için çalıştırın. Belirli bir Microsoft Office uygulaması için hangi programatik tanımlayıcıların kullanıldığı bu uygulamalarla ilgili bölümlerde tartışılacaktır.

Programlama açısından bakıldığında, otomasyon nesneleri, nesne yönelimli programlama teorisi ve pratiğinden bize tanıdık gelen sıradan nesnelerden çok farklı değildir. Sıradan nesneler gibi, özellikleri ve yöntemleri vardır. Bir özellik, bir nesnenin bir özelliğidir; örneğin, bir paragraf özelliği (Paragraf nesnesi) onun stili (Stil) olabilir. Yöntem, bir nesne üzerinde gerçekleştirilebilen bir eylemdir (örneğin, Belge nesnesinin SaveAs yöntemini kullanarak bir belgeyi kaydedebilirsiniz).

Otomasyon sunucularının, koleksiyon adı verilen aynı türden nesne koleksiyonlarını içermesi nadir görülen bir durum değildir. Örneğin, bir kelime işlemci bir belge koleksiyonu içerebilir ve her belge bir paragraf koleksiyonu içerebilir.

Otomasyon Sunucularında hangi nesnelerin mevcut olduğunu nasıl öğrenebilirim? Bu amaçla, her otomasyon sunucusu, nesne modelini açıklayan belgeler ve yardım dosyalarıyla birlikte gelir. Microsoft Office 2000 uygulamalarını ele alırsak, bunlar Visual Basic for Applications VBAxxx9.CHM (sırasıyla Microsoft Office 97 - VBxxx8.HLP için) kullanan programcılar için yardım dosyalarıdır. Sıradan kullanıcılar değil, geliştiriciler tarafından ihtiyaç duyuldukları için varsayılan olarak yüklenmediklerini unutmayın.

Otomasyon denetleyicilerinin ihtiyaç duyduğu nesnelerle ilgili tüm bilgiler, tür kitaplıklarında bulunur. Tür kitaplıkları özel bir ikili biçimde saklanır ve genellikle *.olb veya *.tlb uzantılı dosyalar olarak temsil edilir ve ayrıca yürütülebilir dosyalar (*.exe) veya dinamik olarak yüklenen kitaplıklar (*.dll) içinde bulunabilir. Tür kitaplıkları, Microsoft Platform SDK'da bulunan OleView yardımcı programı kullanılarak görüntülenebilirken, Borland'ın geliştirme araçları kendi tür kitaplığı görüntüleyicilerini içerir.

Otomasyona kısa bir girişten daha fazlasını bitirerek, aynı zamanda ciltleme kavramı üzerinde de duralım. Bağlama, bir denetleyici uygulamasındaki bir değişkenin veya sınıfın bir otomasyon nesnesine başvurma şeklidir. Bu tür iki yöntem vardır: geç bağlama ve erken bağlama.

Geç bağlama, değişken veya sınıftaki nesneye gerçek başvurunun, denetleyici uygulamasının çalıştığı sırada gerçekleştiği anlamına gelir. Bu yöntem genellikle daha önceki bağlamadan daha yavaştır, ancak otomasyon denetleyicileri oluşturmanıza izin veren tüm geliştirme araçlarında bulunur ve denetleyici uygulama kodunda çağrıldıklarında tüm yöntem parametrelerinin numaralandırılıp numaralandırılmadığına daha az duyarlıdır. Geç bağlama ile, yöntem çağrılarının doğruluğu, derleme aşamasında değil, yürütme sırasında, yani uygulamanın çalışma zamanında kontrol edilir.

Erken bağlama, otomasyon nesnesine yapılan gerçek başvurunun derleme zamanında zaten göründüğü anlamına gelir. Bu nedenle, denetleyici uygulamasının kodunda, tür kitaplığına (veya onun arabirimi olan özel bir modüle) bir başvuru gereklidir ve bu, bu uygulamada, aynı özelliklere ve yöntemlere sahip sınıfların oluşturulmasına yol açar. derleme zamanında olası yöntem adlarını ve tür kitaplığında bulunan adlandırılmış sabitlere erişimi sözdizimsel denetimi mümkün kılan otomasyon nesneleri. Ancak, geç bağlamayı destekleyen tüm geliştirme araçlarının erken bağlamayı da desteklemediğini unutmayın.

COM ve otomasyon turumuzu bitirdikten sonra, otomasyon denetleyicileri oluşturmak için hangi geliştirme araçlarının uygun olduğu sorusuna dönelim.

VBA ve otomasyon denetleyicisi geliştirme araçları

Yukarıda bahsedildiği gibi, çeşitli geliştirme araçları kullanılarak otomasyon kontrolörleri oluşturulabilir ve otomasyon kontrolörleri oluşturmayı destekleyen araçlardan herhangi birini zaten kullanıyorsanız, kullanabilirsiniz. Yapmanız gereken tek şey, kullanmayı planlıyorsanız geliştirme aracınızın ön bağlamayı destekleyip desteklemediğini öğrenmektir. Sunucu yöntemlerinin nasıl çağrıldığı hakkında fikir veren en basit otomasyon denetleyicilerinin örnekleri (genellikle Microsoft Word veya Microsoft Excel için), genellikle en modern geliştirme araçlarıyla bulunabilir.

VBA kullanarak gerekli eylem sırasını bir makro biçiminde kaydederek otomatik bir sunucunun nesne modelinde uzmanlaşmaya başlayabilirsiniz. Araçlar | Makro |Yeni Makro Kaydet. Ortaya çıkan makroyu bir VBA kod düzenleyicisinde görüntülemek, genellikle bu eylem dizisini uygulayan kodun nasıl görünmesi gerektiği konusunda size bir fikir verir.

Otomasyon denetleyicileri geliştirmek için olası araçları tartıştıktan sonra, nihayet Microsoft Office uygulamalarının kendilerine, nesne modellerine ve kullanımlarına geçebiliriz. Aşağıdaki örnekler, geliştirme aracı olarak Borland Delphi 5'i kullanmaktadır, ancak Microsoft Office nesnelerinin çağrı özelliklerinin ve yöntemlerinin sırasını gösterdikleri için, kodu diğer programlama dillerine taşımak çok zor olmamalıdır. Aksi belirtilmedikçe, bu makaledeki tüm örnekler erken bağlama kullanır.

Microsoft Office Nesne Modelleri

Yukarıda bahsedildiği gibi, Microsoft Office uygulamaları, bir nesneler hiyerarşisi olan nesne modelleri aracılığıyla, otomasyon denetleyicilerine işlevlerine erişim sağlar. Nesneler, koleksiyonlar aracılığıyla diğer nesnelere erişim sağlayabilir.

Microsoft Office nesne hiyerarşisinin nasıl göründüğünün bir örneği olarak, Microsoft Word nesne modelinin küçük bir parçası aşağıda verilmiştir (Şekil 1):

Nesne modellerinde (Şekil 2)

Tüm Microsoft Office uygulamaları arasında, uygulamanın kendisinin otomatikleştirildiğini temsil eden denetleyici uygulaması için her zaman en üstte bulunan bir nesne vardır. Tüm Microsoft Office uygulamaları için buna Uygulama denir ve birçok özelliği ve yöntemi tüm bu uygulamalar için aynıdır. Aşağıdakileri en sık kullanacağız:

  1. Visible özelliği (tüm Microsoft Office uygulamalarının Uygulama nesnesinde bulunur), uygulamanın ekranda ve görev çubuğunda görünmesini sağlar; Doğru (uygulama kullanıcı arabirimi kullanılabilir) veya Yanlış (uygulama kullanıcı arabirimi kullanılamaz; bu varsayılan değerdir). Kullanıcıyı bilgilendirmeden arka planda bir Office belgesiyle bir şeyler yapmanız gerekiyorsa, bu özelliğe dokunmadan bırakabilirsiniz - bu durumda uygulama yalnızca Görev Yöneticisi uygulaması kullanılarak işlem listesinde bulunabilir.
  2. Quit yöntemi, Office uygulamasını kapatır. Hangi Office uygulamasının otomatikleştirildiğine bağlı olarak seçenekleri olabilir veya olmayabilir.

Otomasyon kontrolörleri oluşturmak için genel ilkeler

Genel olarak, otomasyon kontrolörü aşağıdakileri yapmalıdır:

  1. Sunucu uygulamasının bir kopyasının çalışıp çalışmadığını kontrol edin.
  2. Taramanın sonuçlarına bağlı olarak, otomatik hale getirilen Office uygulamasının bir kopyasını başlatın veya mevcut bir kopyaya bağlanın.
  3. Sunucu uygulama penceresini görünür yapın (genel olarak bu gerekli değildir).
  4. Sunucu uygulamasıyla bazı eylemler gerçekleştirin (örneğin, belgeler oluşturun veya açın, verilerini değiştirin, belgeleri kaydedin vb.)
  5. Kopyası bu denetleyici tarafından başlatıldıysa sunucu uygulamasını kapatın veya denetleyici mevcut bir kopyaya bağlıysa uygulamayı kapatın.

Delphi için karşılık gelen kod Liste 1'de gösterilmektedir.

Burada, sunucu uygulamasının halihazırda çalışan bir örneğine bağlanmak veya sunucu çalışmıyorsa yeni bir tane başlatmak için GetActiveOleObject ve CreateOleObject işlevlerini kullandık, bu da değişken değişkenin ilgili sunucunun Application nesnesine ayarlanmasına neden olur. .

Denetleyici kodunun diğer geliştirme araçlarında verilen kısmı farklı görünebilir - Delphi'de standart OLE işlevlerini çağırma kuralları tarafından belirlendiğinden (Görünür'e yapılan çağrılar hariç) doğrudan Office nesnelerinin yöntemleriyle ilgili değildir. ve Uygulama nesnesinin Çıkış yöntemleri). Ve burada bir yorum yerine eklenmesi gereken her şey var<Здесь выполняются другие действия с объектами приложения Office>, farklı geliştirme araçlarında aşağı yukarı aynı görünmelidir - oluşturulan değişken değişkenini kullanarak Uygulama nesnesinin yöntemlerini ve özelliklerini değiştiririz.

Sonuç olarak, otomasyon nesnelerinin yöntemlerinin parametre sayısı hakkında küçük bir açıklama yapalım. Geç bağlama durumunda, kodda belirtilen yöntem parametrelerinin sayısının gerçek sayılarıyla eşleşmesi gerekmez (bu, ilgili uygulamanın nesne modelinin açıklamasında bulunabilir). Bu durumda, aşağıdaki kod tamamen geçerlidir:

Uygulama nesnesinin Quit yöntemi, bazı Microsoft Office uygulamalarında (Microsoft Word gibi) parametrelere sahip olsa da.

Erken bağlama kullanırken, örneğin, Delphi kullanarak denetleyiciler oluştururken, parametreleri tanımlarken daha katı olmalısınız - bunların sayısı ve türü, tür kitaplığındaki yöntemlerin açıklamasıyla eşleşmelidir. Örneğin, erken bağlama durumunda, tüm parametreler için varsayılan değerlerle bir Word belgesini kapatmak için doğru Delphi kodu şöyle olacaktır:

App.Quit(EmptyParam, EmptyParam, EmptyParam);

Bu kuralın istisnası Visual Basic'tir - bu geliştirme aracı, kod yazarken yöntem parametrelerinin sayısını düşünmemenizi sağlar.

Otomasyon denetleyicileri oluşturmanın genel ilkelerini tartıştıktan ve Borland Delphi kullanarak nasıl yapıldığını öğrendikten sonra, belirli Microsoft Office uygulamalarını otomatikleştirmeye geçebiliriz. Bu paketin en popüler bileşenlerinden biri olan Microsoft Word ile başlayalım.

Programatik tanımlayıcılar ve Microsoft Word nesne modeli

Aşağıdaki nesneler, denetleyici uygulamasında doğrudan kullanılabilir:

Diğer tüm Word nesneleri dahili nesneler olarak adlandırılır. Bu, kendi başlarına yaratılamayacakları anlamına gelir; bu nedenle, bir Paragraf nesnesi (paragraf), içerdiği belgeden ayrı olarak oluşturulamaz.

Word'ün asıl amacının belgelerle çalışmak olduğunu hatırlarsak, nesne modelinin hiyerarşisini kolayca anlayabiliriz (bir parçası Şekil 1'de gösterilmiştir). İçindeki ana nesne, diğer tüm Microsoft Office uygulamalarında olduğu gibi, Document türündeki nesnelerin Documents koleksiyonunu içeren Application nesnesidir. Document türündeki her nesne, Paragraf Paragrafları, Yer İmi Yer İmleri, Karakter Karakterleri vb. koleksiyonu içerir. Belgelerin, paragrafların, sembollerin, yer imlerinin manipülasyonu aslında bu nesnelerin özelliklerine ve yöntemlerine erişilerek gerçekleştirilir.

Aşağıda, Microsoft Word'ün otomatikleştirilmesiyle ilgili en yaygın görevlere bakacağız. Yukarıdakilerden herhangi birine uymayan bir görevle karşılaşırsanız, VBAWRD9.CHM yardım dosyasında uygun bir Visual Basic örneği bulmaya çalışabilir veya yukarıda belirtildiği gibi gerekli işlem sırasını aşağıdaki şeklinde yazabilirsiniz. bir makro ve kodunu analiz edin.

Microsoft Word belgeleri oluşturun ve açın

Microsoft Word kullanım örnekleri oluşturmak için yukarıdaki denetleyici oluşturma kodunu kullanabilir ve yorumları Word.Application nesnesinin özelliklerini ve yöntemlerini yöneten kodla değiştirerek değiştirebilirsiniz. Belgeler oluşturup açarak başlayacağız.

Application nesnesinin Documents koleksiyonunun Add yöntemini kullanarak yeni bir Word belgesi oluşturabilirsiniz:

Uygulama.Belgeler.Add;

Özel bir belge nasıl oluşturulur? Çok basit - Şablon adını Add yönteminin bir parametresi olarak belirtmeniz gerekir:

App.Documents.Add("C:\Program Files\ _ Microsoft Office\Templates\1033\Manual.dot");

Mevcut bir belgeyi açmak için Belgeler koleksiyonunun Aç yöntemini kullanın:

App.Documents.Open("C:\MyWordFile.doc");

Word.Application nesnesinin ActiveDocument özelliğinin, bir veya daha fazla açık belge arasından o anda etkin olan belgeye işaret ettiğini unutmayın. Ayrıca, Kalem yöntemi kullanılarak seri numarasına göre bir belgeye erişilebilir; örneğin, ikinci açık belgeye şu şekilde erişilebilir:

Uygulama.Belgeler.Öğe(2)

Microsoft Office'te koleksiyon üyelerinin numaralandırılmasının birden başladığını unutmayın.

Etkinleştir yöntemini kullanarak bir belgeyi etkin hale getirebilirsiniz:

App.Documents.Item(1).Activate;

Öğrenilecek bir sonraki şey, Word belgesini kaydetmek ve Word'ün kendisini kapatmaktır.

Microsoft Word belgelerini kaydetme, yazdırma ve kapatma

App.Documents.Item(2).Close;

App.ActiveDocument.Close ;

Kapat yöntemi, belgenin nasıl kaydedildiğini etkileyen birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir. Bunlardan ilki, belgede yapılan değişikliklerin kaydedilip kaydedilmediğini etkiler ve üç olası değeri alır (ilgili sabitlerin ekte açıklanması önerilir. Liste 2'ye bakın):

Üçüncü parametre Doğru veya Yanlış'tır ve belgenin bir sonraki kullanıcıya e-postayla gönderilip gönderilmeyeceğini kontrol eder. Bu işlev kullanılmazsa, bu ayarı yok sayabilirsiniz.

Böylece, bu seçenekleri kullanırken belgeyi örneğin şu şekilde kapatabilirsiniz:

App.ActiveDocument.Close(wdSaveChanges, _ wdPromptUser) ;

App.ActiveDocument.Save;

Bu yöntem ayrıca birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir; bunlardan ilki belge otomatik olarak kaydedilirse True ve (varsa) kullanıcıdan değişiklikleri onaylamasını istemek için bir iletişim kutusu görüntülenmesi gerekiyorsa False olur. kurtarıldı. İkinci parametre, kaydedilen belgenin biçimini etkiler ve bunun için olası değerlerin listesi, Kapat yönteminin ikinci parametresinin değer listesiyle aynıdır.

Hatırlatma olarak, Word.Application nesnesinin Quit yöntemini kullanarak Word'ün kendisini kapatabilirsiniz. Bu yöntem genellikle Document nesnesinin Close yöntemiyle aynı olan üç parametreye sahiptir.

Document nesnesinin PrintOut yöntemini kullanarak bir belgenin çıktısını bir yazdırma aygıtına verebilirsiniz, örneğin:

App.ActiveDocument.PrintOut;

Yazdırma ayarlarını değiştirmeniz gerekirse, PrintOut yönteminin karşılık gelen parametrelerinin değerlerini belirtmelisiniz (Microsoft Word durumunda, yaklaşık yirmi tane vardır).

Bir belgeye metin ve nesneler ekleme ve metni biçimlendirme

Bir belgede paragraflar oluşturmak için, belgedeki paragraf kümesini temsil eden Belge nesnesinin Paragraflar koleksiyonunu kullanabilirsiniz. Bu koleksiyonun Add yöntemini kullanarak yeni bir paragraf ekleyebilirsiniz:

App.ActiveDocument.Paragraphs.Add;

Ancak asıl metni belgeye eklemek için kullanılan Paragraph nesnesi değil, belgenin herhangi bir sürekli bölümünü temsil eden Range nesnesidir (yeni oluşturulan paragraf dahil). Bu nesne farklı şekillerde oluşturulabilir. Örneğin, bir aralığın başlangıç ​​ve bitiş karakterlerini belirtebilirsiniz (belgede varsa):

VarRng: ​​​​Varyant; ...Rng:= App.ActiveDocument.Range(2,4); // 2. karakterden 4. karaktere kadar

veya paragraf numarasını belirtin (örneğin, yeni oluşturuldu):

Rng:= App.ActiveDocument.Paragraphs.Item(1).Range;

veya arka arkaya birkaç paragraf belirtin:

Rng:= App.ActiveDocument.Range _(App.ActiveDocument.Paragraphs.Item(3).Range.Start,_ App.ActiveDocument.Paragraphs.Item(5).Range.End)

InsertBefore (aralıktan önce) veya InsertAfter (aralıktan sonra) Range nesne yöntemlerini kullanarak metin ekleyebilirsiniz, örneğin:

Rng.InsertAfter("Bu eklenecek metindir");

Range nesnesine ek olarak, belgenin seçilen bölümünü temsil eden Word.Application nesnesinin bir özelliği olan Selection nesnesi kullanılarak metin eklenebilir (bu nesne, kullanıcı fare ve ayrıca bir denetleyici uygulaması kullanılarak da oluşturulabilir). Selection nesnesinin kendisi, Select yöntemi Range nesnesine şu şekilde uygulanarak oluşturulabilir:

Var Sel: Varyant; ... App.ActiveDocument.Paragraphs.Item(3).Range.Select;

Yukarıdaki örnekte, geçerli belgede üçüncü paragraf vurgulanmıştır.

Belgeye, bir metin seçimi yerine veya ondan önce bir metin satırı eklemek istersek, bu, aşağıdaki kod parçacığı ile yapılabilir:

Var Sel: Varyant; ... Seç:= Uygulama Seçimi; Sel.TypeText("Seçimi _ ile değiştireceğimiz metin bu");

Word.Application nesnesinin Options.ReplaceSelection özelliği True ise, seçilen metnin yeni metinle değiştirileceğini unutmayın (bu varsayılan moddur); metnin onun yerine değil de seçimden önce eklenmesini istiyorsanız, bu özelliği False olarak ayarlamanız gerekir:

App.Options.ReplaceSelection:= Yanlış;

Selection nesnesi kullanılırken paragraf sonu karakteri, aşağıdaki kod parçacığı kullanılarak eklenebilir:

SelTypeParagraph;

InsertBefore ve InsertAfter yöntemlerini, Range nesnesinin yanı sıra Selection nesnesine de uygulayabilirsiniz. Bu durumda, öncekinden farklı olarak eklenen metin, seçilen metin parçasının bir parçası olacaktır.

Selection nesnesiyle, Font özelliğini ve Kalın, İtalik, Boyut,: gibi Font nesnesi özelliklerini kullanarak metni biçimlendirebilirsiniz. Örneğin, bu şekilde kalın harflerle bir satır ekleyebilirsiniz:

Sel.Font.Bold:= Doğru; Sel.TypeText("Bu _bold yazacağımız metindir."); Sel.Font.Bold:= Yanlış; SelTypeParagraph;

Eklenen metne önceden tanımlanmış bir stil uygulamak için aynı nesnenin Stil özelliğini kullanabilirsiniz, örneğin:

Sel.Style:= "Başlık 1"; Sel.TypeText("Bu _ başlık olacak metindir"); SelTypeParagraph;

Word belgelerinin diğer uygulamalardan veri içermesi nadir görülen bir durum değildir. Bu tür verileri bir belgeye yapıştırmanın en kolay yolu, Range nesnesinin Yapıştır yöntemini kullanmaktır:

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Collapse(wdCollapseEnd); Rng.Yapıştır;

Doğal olarak, bu durumda pano zaten yapıştırılacak verileri içermelidir.

Panoya bir Word belgesinin bir bölümünü yerleştirmeniz gerekiyorsa, bunu Range nesnesinin Kopyalama yöntemini kullanarak yapabilirsiniz:

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Kopyala;

Öğrenilecek bir sonraki şey, imleci metinde doğru yere nasıl taşıyacağımızdır, bir sonraki bölümde yapacağımız şey budur.

İmleci metnin üzerine taşı

Daraltma yöntemini kullanarak şunları yapabilirsiniz:<сжать>Boyutunu sıfır karaktere düşüren bir Range nesnesi veya bir Selection nesnesi:

Rng.Collapse(wdCollapseEnd);

Bu yöntemin parametresi, yeni Range veya Selection nesnesinin orijinal parçanın başında mı yoksa sonunda mı görüneceğini belirtir. Geç bağlama kullanıyorsanız ve geliştirme aracınız Visual Basic değilse, uygulamanızda uygun sabitleri tanımlamanız gerekir:

Const wdCollapseStart = $00000001; //yeni nesne parçanın başında wdCollapseEnd = $00000000; // yeni nesne parçanın sonunda

Range ve Selection nesnelerinin Move yöntemini kullanarak imleci metnin üzerine taşıyabilirsiniz. Bu yöntemin iki parametresi vardır. İlk parametre hareketin hangi birimlerde ölçüldüğünü gösterir - karakterler (varsayılan olarak), kelimeler, cümleler, paragraflar, vb. İkinci parametre bu durumda kaç birim hareket edeceğini gösterir (bu sayı negatif olabilir; varsayılan olarak 1) Örneğin, aşağıdaki kod parçası:

Rng.Move;

imleci bir karakter ileriye taşır ve

Rng.Move(wdParagraph,3);

imleci üç paragraf ileriye taşır. Bu yöntemin aşağıdaki sabitleri kullandığını unutmayın:

Const //Hareket birimi: wdCharacter = $00000001; //karakter wdWord = $00000002; //kelime wdSentence = $00000003; //cümle wdParagraph = $00000004; //paragraf wdStory = $00000006; //belge bölümü //örneğin, altbilgi, //içindekiler, vb.) wdSection = $00000008; //bölüm wdColumn = $00000009; //tablo sütunu wdRow = $0000000A; //tablo satırı wdCell = $0000000C; //tablo hücresi wdTable = $0000000F; //masa

Yer imleri genellikle metin içinde gezinmek için kullanılır. Add yöntemini kullanarak Document nesnesinin Bookmarks koleksiyonunun bir üyesini ekleyerek, yer iminin adını parametre olarak ileterek, geçerli imleç konumunda bir yer imi oluşturabilirsiniz, örneğin:

App.ActiveDocument.Bookmarks.Add("MyBookmark");

Exists yöntemini kullanarak belgedeki bir yer iminin varlığını kontrol edebilir ve Document, Range veya Selection nesnelerinin Goto yöntemini kullanarak ona gidebilirsiniz:

Rng:= App.ActiveDocument.Goto(wdGoToBookmark, wdGoToNext,"MyBookmark"); Rng.InsertAfter("Yer iminden sonra eklenen metin");

Bu örnek için sabit değerler şunlardır:

WdGoToBookmark = $FFFFFFFF; // yer işaretine git wdGoToNext = $00000002; // metinde sonraki nesneyi ara

Goto yöntemini kullanarak, yalnızca belirtilen yer imine değil, aynı zamanda diğer nesnelere (resimler, dilbilgisi hataları vb.) Hareket edebileceğinizi ve hareket yönünün de farklı olabileceğini unutmayın. Bu nedenle, bu yöntemin parametresi olarak kullanılabilecek sabitlerin listesi oldukça büyüktür.

Tablo oluşturma

Tablo oluşturmanın iki yolu vardır. Birincisi Document nesnesinin Tables koleksiyonunun Add yöntemini çağırmak ve hücreleri sırayla verilerle doldurmaktır. Bu geç bağlama yöntemi oldukça yavaştır.

İkinci yol çok daha<быстрый>, ayırıcılarla alt dizeler içeren birkaç satırdan metin oluşturmaktan oluşur (herhangi bir veya hemen hemen her karakter ayırıcı olarak kullanılabilir, yalnızca gelecekteki tabloya yerleştirilecek verilerde kesinlikle olmaması gerekir) ve sonra Range nesnesinin ConvertToTable yöntemini kullanarak bu tür metni tabloya dönüştürmek. Aşağıdaki, bu şekilde üç satır ve üç sütunlu bir tablo oluşturmaya bir örnektir (ayırıcı olarak virgül kullanılır, bu ConvertToTable yönteminin ilk parametresidir):

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Collapse(wdCollapseEnd); Rng.InsertAfter("1, 2, 3"); Rng.InsertParagraphAfter; Rng.InsertAfter("4,5,6"); Rng.InsertParagraphAfter; Rng.InsertAfter("7,8,9"); Rng.InsertParagraphAfter; Rng.ConvertToTable(",");

Bir tablonun görünümünün, Format özelliği kullanılarak ve ayrıca tablonun sütunlarını temsil eden Columns koleksiyonunun ve Table nesnesinin tablo satırlarını temsil eden Rows koleksiyonunun özellikleri kullanılarak değiştirilebileceğini unutmayın.

Belge Özelliklerine Erişme

Belge özellikleri, Document nesnesinin BuiltInDocumentProperties koleksiyonu kullanılarak alınabilir, örneğin:

Memo1.Lines.Add("Title - " + _ App.ActiveDocument.BuiltInDocumentProperties .Value); Memo1.Lines.Add("Yazar - " + _ App.ActiveDocument.BuiltInDocumentProperties . _ Değer); Memo1.Lines.Add("Şablon - " + _ App.ActiveDocument.BuiltInDocumentProperties . _Value)

Belge özelliklerine ada göre erişmek için gereken sabitler Liste 3'te gösterilmektedir.

Bu bölümde, Microsoft Word'ü otomatikleştirirken en sık kullanılan temel işlemleri inceledik. Doğal olarak, Word otomasyonunun olanakları verilen örnekler tarafından tükenmekten uzaktır, ancak umarım bu makalede ve ilgili yardım dosyasında ana hatlarıyla verilen Word denetleyicileri oluşturmanın temel ilkelerinin rehberliğinde bunları kullanabileceksiniz - bizde zaten bunun hiç de zor olmadığını gördük.

Doğrudan denetleyici uygulamasından oluşturulabilen üç tür Excel nesnesi vardır. Bu nesneler ve bunlara karşılık gelen programatik tanımlayıcılar aşağıda listelenmiştir.

Diğer tüm Excel nesneleri dahili nesneler olarak adlandırılır.

Microsoft Excel nesne modelinin küçük bir parçası Şekil 2'de gösterilmektedir:

Excel nesne modelinin merkezinde, Çalışma Kitabı türündeki nesnelerin bir Çalışma Kitapları koleksiyonunu içeren Uygulama nesnesi bulunur. Çalışma Kitabı türünün her nesnesi, Çalışma Sayfası türünden bir Çalışma Sayfaları-nesneleri, Grafik türündeki Grafikler vb. içerir. Çalışma kitapları, bunların sayfaları, hücreleri, çizelgeleri aslında bu nesnelerin özelliklerine ve yöntemlerine erişilerek değiştirilir.

Aşağıda, Microsoft Excel'in otomatikleştirilmesiyle ilgili en yaygın görevlere bakacağız. Yukarıdakilerden herhangi birine uymayan bir görevle karşılaşırsanız, VBAXL9.CHM yardım dosyasında uygun bir Visual Basic örneği bulmaya çalışabilir veya Microsoft Word örneğinde olduğu gibi ilgili makroyu kaydedip analiz edebilirsiniz. kod.

Microsoft Excel'in başlatılması, çalışma kitaplarının oluşturulması ve açılması

Microsoft Excel örnekleri oluşturmak için bölümünde sağlanan denetleyici oluşturma kodunu kullanabilirsiniz.<Общие принципы создания контроллеров автоматизации>, yukarıdaki örnekteki ilk ifadeyi aşağıdaki ile değiştirerek:

AppProgID:= "Excel.Uygulama";

ve yorumları Excel.Application nesnesinin özelliklerini ve yöntemlerini yöneten kodla değiştirin. Ancak, GetActiveOleObject yöntemini kullanarak bir otomasyon denetleyicisini mevcut bir Excel sürümüne bağlamanın tüm Excel istemci tarafının görünmez olmasına neden olabileceğini unutmayın (bu, Excel'in mevcut kopyası, kullanıcı arabiriminin kullanılamadığı bir modda çalışıyorsa gerçekleşir). ). Bu davranışın nedenleri yazar tarafından bilinmemektedir. Bu nedenle, böyle bir durum olasılığı varsa, denetleyici oluşturma kodunu basitleştirmek ve her zaman yeni bir Excel kopyası oluşturmak daha iyidir.

Çalışma kitapları oluşturup açarak Excel denetleyicilerinin nasıl oluşturulacağını öğrenmeye başlayacağız.

Uygulama nesnesinin Çalışma Kitapları koleksiyonunun Ekle yöntemini kullanarak yeni bir Excel çalışma kitabı oluşturabilirsiniz:

App.WorkBooks.Add;

Şablona dayalı bir çalışma kitabı oluşturmak için, Add yönteminin ilk parametresi olarak adını belirtin:

App.WorkBooks.Add("C:\Program Files\Microsoft _ Office\Templates\1033\invoice.xlt");

Bu yöntemin ilk parametresi olarak aşağıdaki sabitleri de kullanabilirsiniz:

Sabit xlWBATChart = $FFFFFF3; //çalışma kitabı grafik sayfasından oluşur xlWBATÇalışma sayfası = $FFFFEFB9; //çalışma kitabı veri sayfasından oluşur

Bu durumda, çalışma kitabı, belirtilen sabit (grafik, normal veri sayfası, vb.)

Halihazırda var olan bir belgeyi açmak için Çalışma Kitapları koleksiyonunun Aç yöntemini kullanın:

App.Documents.Open("C:\MyExcelFile.xls");

Excel.Application nesnesinin ActiveWorkBook özelliğinin, bir veya daha fazla açık olanlardan o anda etkin olan çalışma kitabına işaret ettiğini unutmayın. Ek olarak, çalışma kitabına seri numarasından erişilebilir, örneğin ikinci açık çalışma kitabına şu şekilde erişilebilir:

Uygulama.Çalışma Kitapları

Delphi'de geç bağlama kullanırken, Excel nesneleri koleksiyonlarının üyelerine atıfta bulunmak için kullanılan sözdiziminin Word nesnelerine atıfta bulunmak için kullanılan sözdiziminden farklı olduğunu unutmayın - Word durumunda, Item yöntemini kullandık ve bu durumda Excel'de, üye koleksiyonlarına dizi öğeleri olarak atıfta bulunuruz. Ancak Visual Basic kullanıyorsanız, koleksiyon üyelerine erişim sözdizimi tüm Microsoft Office koleksiyonları için aynıdır.

Activate yöntemini kullanarak bir çalışma kitabını aktif hale getirebilirsiniz:

App.WorkBooks.Activate;

Öğrenilecek bir sonraki şey, çalışma kitaplarının dosyalara nasıl kaydedileceğidir.

Microsoft Excel Çalışma Kitaplarını Kaydetme, Yazdırma ve Kapatma

Bir belgeyi kapatmak, Kapat yöntemi kullanılarak yapılabilir:

App.WorkBooks.Close;

App.ActiveWorkBook.Close;

Kapat yöntemi, çalışma kitabının kaydedilme şeklini etkileyen birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir. Seçeneklerden ilki Doğru veya Yanlış'tır ve çalışma kitabında yapılan değişikliklerin kaydedilip kaydedilmeyeceğini etkiler. İkinci parametre (Varyant türünde), çalışma kitabının kaydedilmesi gereken dosyanın adıdır (değişiklik yapılmışsa). Yine True veya False olarak ayarlanan üçüncü parametre, belgenin bir sonraki kullanıcıya e-postayla gönderilip gönderilmeyeceğini etkiler ve bu işlev kullanılmazsa yoksayılabilir.

App.ActiveWorkBook.Close(True,"C:\MyWorkBook.xls");

App.ActiveWorkBook.Save;

App.ActiveWorkBook.SaveAs("C:\MyWorkBook.xls");

SaveAs yöntemi, belgenin nasıl kaydedildiğini etkileyen bir düzineden fazla parametreye sahiptir (hangi adla, şifreli veya şifresiz, içerdiği metnin kod sayfası nedir, vb.).

Excel.Application nesnesinin Quit yöntemini kullanarak Excel'in kendisini kapatabilirsiniz. Excel durumunda, bu yöntemin parametresi yoktur.

WorkBook nesnesinin PrintOut yöntemini kullanarak bir Excel belgesinin çıktısını bir yazdırma aygıtına verebilirsiniz, örneğin:

App.ActiveWorkBook.PrintOut;

Yazdırma ayarlarını değiştirmeniz gerekirse, PrintOut yönteminin karşılık gelen parametrelerinin değerlerini belirtmelisiniz (Excel durumunda bunlardan sekiz tane vardır).

Referans Sayfaları ve Hücreler

Çalışma sayfalarına, WorkBook nesnesinin WorkSheets koleksiyonu kullanılarak erişilir. Bu koleksiyonun her üyesi bir WorkSheet nesnesidir. Bu koleksiyonun bir üyesine dizin numarasından erişilebilir, örneğin:

App.WorkBooks.WorkSheets.Name:= _ "Sayfa 1";

Yukarıdaki örnek, çalışma kitabı sayfası adını nasıl değiştirebileceğinizi gösterir.

Ayrıca bir çalışma kitabı sayfasına ada göre de başvurabilirsiniz, örneğin:

App.WorkBooks.WorkSheets["Sayfa1"].Ad:= _ "Sayfa 1";

Bir sayfanın tek tek hücrelerine, WorkSheet nesnesinin Cells koleksiyonu kullanılarak erişilir. Örneğin, B1 hücresine şu şekilde veri ekleyebilirsiniz:

App.WorkBooks.WorkSheets["Sheet1"].Cells.Value:="25";

Burada, hücre koordinatlarından ilki satır numarasını, ikincisi - sütun numarasını gösterir.

Hücrelere formül eklemek benzer şekilde yapılır:

App.WorkBooks.WorkSheets["Sayfa1"] _ .Cells.Value:= " =SUM(B1:B2)";

ClearContents yöntemini kullanarak bir hücreyi temizleyebilirsiniz.

Hücrelerdeki metni biçimlendirme, Cell nesnesinin Font ve Interior özellikleri ve bunların alt özellikleri kullanılarak yapılır. Örneğin, aşağıdaki kod parçacığı, bir hücredeki metni sarı bir arka plan üzerinde kırmızı 16 noktalı Courier'de kalın olarak işler:

App.WorkBooks.WorkSheets.Cells.Interior _ .Color:= clYellow; App.WorkBooks.WorkSheets.Cells.Font _ .Color:= clRed; App.WorkBooks.WorkSheets.Cells _ .Font.Name:= "Kurye"; App.WorkBooks.WorkSheets.Cells _ .Font.Size:= 16; App.WorkBooks.WorkSheets.Cells _ .Font.Bold:= Doğru;

Program tanımlayıcısı

Bu makale, yeni olmayabilecek bir konuya ayrılmıştır, ancak okuyuculardan gelen mektupların gösterdiği gibi, hala alakalı - Microsoft Office uygulamalarının otomasyonu. Projeleri üzerinde çalışma sürecinde olan birçok geliştirici (hangi geliştirme aracı olursa olsun - Delphi, C ++ Builder, Visual Basic ...) genellikle Microsoft Excel kullanarak pivot tablolar ve çizelgeler oluşturmak gibi Microsoft Office tarafından sağlanan hizmetleri kullanır. Microsoft Word vb. kullanarak belge oluşturma ve yazdırma. Çoğu zaman, günlük işlerinde Microsoft Office uygulamalarını kullanmaya alışmış olan kullanıcılar, bu tür hizmetleri uygulamalarda kullanmakta veya sadece raporları ve diğer belgeleri Microsoft Office formatlarından birinde kaydetmekte ısrar ediyorlar. Microsoft'un bu tür potansiyel isteklerinin uzun süredir dikkate alındığını unutmayın - herhangi bir Microsoft Office uygulamasının kullanıcısının menü, klavye ve araç çubuğunu kullanarak yapabileceği hemen hemen her şey otomatik olarak da yapılabilir, yani ya bir VBA programından veya geliştirme araçlarından biri kullanılarak oluşturulan uygulamadan. Başka bir deyişle, Microsoft Office uygulamaları programlanabilir. Programlanabilirlik, genel olarak belirli bir uygulamayı makro diller yardımıyla veya diğer uygulamaların yardımıyla kontrol etme yeteneği anlamına gelir. Microsoft Office'in tüm bileşenleri aynı makro dilini destekler: Doğrudan Office belgelerinin içinde uygulamalar oluşturmanıza olanak tanıyan Visual Basic for Applications (VBA) (buna "Microsoft Office tabanlı çözümler" denir). Office bileşenlerinin diğer uygulamalardan yönetimi otomasyon (Otomasyon, eski adıyla OLE Otomasyonu) kullanılarak gerçekleştirilir - tüm Microsoft Office uygulamaları otomasyon sunucularıdır (veya COM sunucularıdır). Bu tür uygulamalar oluşturmak için otomasyon denetleyicileri (COM istemcileri) oluşturmanıza izin veren herhangi bir geliştirme aracı uygundur. Çoğu zaman bu amaç için Visual Basic kullanılır, ancak Delphi, C++Builder veya Visual C++ olabilir. Ancak, belirli geliştirme araçlarının olanaklarını tartışmadan önce, otomasyonun ne olduğunu anlamalısınız.

Otomasyon hakkında kısaca

Otomasyon, Microsoft COM (Bileşen Nesne Modeli) teknolojisinin sağladığı olanaklardan biridir. Bu teknolojinin uygulanmasının ayrıntılarına girmeden, uygulamalar (COM sunucuları olarak adlandırılır) tarafından nesnelerine ve bu nesnelerin özelliklerine ve yöntemlerine, diğer uygulamalara (COM istemcileri olarak adlandırılır) erişim sağlamak için kullanıldığını not ediyoruz. ), geliştirme araçları olabilir. Örneğin, bir COM sunucusu olan bir kelime işlemci, uygun nesneleri kullanarak diğer uygulamalara bir belgeye, paragrafa, yer işaretine erişim sağlayabilir. COM sunucularını adlandırmak (ve tanımlamak) için genellikle özel dizi tanımlamaları kullanılır - program tanımlayıcıları (Programatik Tanımlayıcı, ProgID). İşletim sisteminin, otomasyon sunucusu yürütülebilir dosyasının hangi dizinde (veya sunucuya şu veya bu uzaktan erişim yöntemi kullanılıyorsa, yerel ağdaki hangi bilgisayarda) bulunduğunu belirlemek için bu tanımlayıcıları kullanabilmesi için gereklidirler ve yürütmek için çalıştırın. Belirli bir Microsoft Office uygulaması için hangi programatik tanımlayıcıların kullanıldığı bu uygulamalarla ilgili bölümlerde tartışılacaktır.

Programlama açısından bakıldığında, otomasyon nesneleri, nesne yönelimli programlama teorisi ve pratiğinden bize tanıdık gelen sıradan nesnelerden çok farklı değildir. Sıradan nesneler gibi, özellikleri ve yöntemleri vardır. Bir özellik, bir nesnenin bir özelliğidir; örneğin, bir paragraf özelliği (Paragraf nesnesi) onun stili (Stil) olabilir. Yöntem, bir nesne üzerinde gerçekleştirilebilen bir eylemdir (örneğin, Belge nesnesinin SaveAs yöntemini kullanarak bir belgeyi kaydedebilirsiniz).

Otomasyon sunucularının, koleksiyon adı verilen aynı türden nesne koleksiyonlarını içermesi nadir görülen bir durum değildir. Örneğin, bir kelime işlemci bir belge koleksiyonu içerebilir ve her belge bir paragraf koleksiyonu içerebilir.

Otomasyon Sunucularında hangi nesnelerin mevcut olduğunu nasıl öğrenebilirim? Bu amaçla, her otomasyon sunucusu, nesne modelini açıklayan belgeler ve yardım dosyalarıyla birlikte gelir. Microsoft Office 2000 uygulamalarını ele alırsak, bunlar Visual Basic for Applications VBAxxx9.CHM (sırasıyla Microsoft Office 97 - VBxxx8.HLP için) kullanan programcılar için yardım dosyalarıdır. Sıradan kullanıcılar değil, geliştiriciler tarafından ihtiyaç duyuldukları için varsayılan olarak yüklenmediklerini unutmayın.

Otomasyon denetleyicilerinin ihtiyaç duyduğu nesnelerle ilgili tüm bilgiler, tür kitaplıklarında bulunur. Tür kitaplıkları özel bir ikili biçimde saklanır ve genellikle *.olb veya *.tlb uzantılı dosyalar olarak temsil edilir ve ayrıca yürütülebilir dosyalar (*.exe) veya dinamik olarak yüklenen kitaplıklar (*.dll) içinde bulunabilir. Tür kitaplıkları, Microsoft Platform SDK'da bulunan OleView yardımcı programı kullanılarak görüntülenebilirken, Borland'ın geliştirme araçları kendi tür kitaplığı görüntüleyicilerini içerir.

Otomasyona kısa bir girişten daha fazlasını bitirerek, aynı zamanda ciltleme kavramı üzerinde de duralım. Bağlama, bir denetleyici uygulamasındaki bir değişkenin veya sınıfın bir otomasyon nesnesine başvurma şeklidir. Bu tür iki yöntem vardır: geç bağlama ve erken bağlama.

Geç bağlama, değişken veya sınıftaki nesneye gerçek başvurunun, denetleyici uygulamasının çalıştığı sırada gerçekleştiği anlamına gelir. Bu yöntem genellikle daha önceki bağlamadan daha yavaştır, ancak otomasyon denetleyicileri oluşturmanıza izin veren tüm geliştirme araçlarında bulunur ve denetleyici uygulama kodunda çağrıldıklarında tüm yöntem parametrelerinin numaralandırılıp numaralandırılmadığına daha az duyarlıdır. Geç bağlama ile, yöntem çağrılarının doğruluğu, derleme aşamasında değil, yürütme sırasında, yani uygulamanın çalışma zamanında kontrol edilir.

Erken bağlama, otomasyon nesnesine yapılan gerçek başvurunun derleme zamanında zaten göründüğü anlamına gelir. Bu nedenle, denetleyici uygulamasının kodunda, tür kitaplığına (veya onun arabirimi olan özel bir modüle) bir başvuru gereklidir ve bu, bu uygulamada, aynı özelliklere ve yöntemlere sahip sınıfların oluşturulmasına yol açar. derleme zamanında olası yöntem adlarını ve tür kitaplığında bulunan adlandırılmış sabitlere erişimi sözdizimsel denetimi mümkün kılan otomasyon nesneleri. Ancak, geç bağlamayı destekleyen tüm geliştirme araçlarının erken bağlamayı da desteklemediğini unutmayın.

COM ve otomasyon turumuzu bitirdikten sonra, otomasyon denetleyicileri oluşturmak için hangi geliştirme araçlarının uygun olduğu sorusuna dönelim.

VBA ve otomasyon denetleyicisi geliştirme araçları

Yukarıda bahsedildiği gibi, çeşitli geliştirme araçları kullanılarak otomasyon kontrolörleri oluşturulabilir ve otomasyon kontrolörleri oluşturmayı destekleyen araçlardan herhangi birini zaten kullanıyorsanız, kullanabilirsiniz. Yapmanız gereken tek şey, kullanmayı planlıyorsanız geliştirme aracınızın ön bağlamayı destekleyip desteklemediğini öğrenmektir. Sunucu yöntemlerinin nasıl çağrıldığı hakkında fikir veren en basit otomasyon denetleyicilerinin örnekleri (genellikle Microsoft Word veya Microsoft Excel için), genellikle en modern geliştirme araçlarıyla bulunabilir.

VBA kullanarak gerekli eylem sırasını bir makro biçiminde kaydederek otomatik bir sunucunun nesne modelinde uzmanlaşmaya başlayabilirsiniz. Araçlar | Makro |Yeni Makro Kaydet. Ortaya çıkan makroyu bir VBA kod düzenleyicisinde görüntülemek, genellikle bu eylem dizisini uygulayan kodun nasıl görünmesi gerektiği konusunda size bir fikir verir.

Otomasyon denetleyicileri geliştirmek için olası araçları tartıştıktan sonra, nihayet Microsoft Office uygulamalarının kendilerine, nesne modellerine ve kullanımlarına geçebiliriz. Aşağıdaki örnekler, geliştirme aracı olarak Borland Delphi 5'i kullanmaktadır, ancak Microsoft Office nesnelerinin çağrı özelliklerinin ve yöntemlerinin sırasını gösterdikleri için, kodu diğer programlama dillerine taşımak çok zor olmamalıdır. Aksi belirtilmedikçe, bu makaledeki tüm örnekler erken bağlama kullanır.

Microsoft Office Nesne Modelleri

Yukarıda bahsedildiği gibi, Microsoft Office uygulamaları, bir nesneler hiyerarşisi olan nesne modelleri aracılığıyla, otomasyon denetleyicilerine işlevlerine erişim sağlar. Nesneler, koleksiyonlar aracılığıyla diğer nesnelere erişim sağlayabilir.

Microsoft Office nesne hiyerarşisinin nasıl göründüğünün bir örneği olarak, Microsoft Word nesne modelinin küçük bir parçası aşağıda verilmiştir (Şekil 1):

Burada, sunucu uygulamasının halihazırda çalışan bir örneğine bağlanmak veya sunucu çalışmıyorsa yeni bir tane başlatmak için GetActiveOleObject ve CreateOleObject işlevlerini kullandık, bu da değişken değişkenin ilgili sunucunun Application nesnesine ayarlanmasına neden olur. .

Denetleyici kodunun diğer geliştirme araçlarında verilen kısmı farklı görünebilir - Delphi'de standart OLE işlevlerini çağırma kuralları tarafından belirlendiğinden (Görünür'e yapılan çağrılar hariç) doğrudan Office nesnelerinin yöntemleriyle ilgili değildir. ve Uygulama nesnesinin Çıkış yöntemleri). Ancak, "Buradaki diğer işlemler Office uygulama nesneleri ile gerçekleştirilir" yorumu yerine eklenmesi gereken her şey, farklı geliştirme araçlarında aşağı yukarı aynı görünmelidir - oluşturulan değişken değişkenini kullanarak, Uygulama nesnesinin yöntemlerini ve özelliklerini değiştiririz.

Sonuç olarak, otomasyon nesnelerinin yöntemlerinin parametre sayısı hakkında küçük bir açıklama yapalım. Geç bağlama durumunda, kodda belirtilen yöntem parametrelerinin sayısının gerçek sayılarıyla eşleşmesi gerekmez (bu, ilgili uygulamanın nesne modelinin açıklamasında bulunabilir). Bu durumda, aşağıdaki kod tamamen geçerlidir:

Uygulama nesnesinin Quit yöntemi, bazı Microsoft Office uygulamalarında (Microsoft Word gibi) parametrelere sahip olsa da.

Erken bağlama kullanırken, örneğin, Delphi kullanarak denetleyiciler oluştururken, parametreleri tanımlarken daha katı olmalısınız - bunların sayısı ve türü, tür kitaplığındaki yöntemlerin açıklamasıyla eşleşmelidir. Örneğin, erken bağlama durumunda, tüm parametreler için varsayılan değerlerle bir Word belgesini kapatmak için doğru Delphi kodu şöyle olacaktır:

App.Quit(EmptyParam, EmptyParam, EmptyParam);

Bu kuralın istisnası Visual Basic'tir - bu geliştirme aracı, kod yazarken yöntem parametrelerinin sayısını düşünmemenizi sağlar.

Otomasyon denetleyicileri oluşturmanın genel ilkelerini tartıştıktan ve Borland Delphi kullanarak nasıl yapıldığını öğrendikten sonra, belirli Microsoft Office uygulamalarını otomatikleştirmeye geçebiliriz. Bu paketin en popüler bileşenlerinden biri olan Microsoft Word ile başlayalım.

Programatik tanımlayıcılar ve Microsoft Word nesne modeli

Aşağıdaki nesneler, denetleyici uygulamasında doğrudan kullanılabilir:

Diğer tüm Word nesneleri dahili nesneler olarak adlandırılır. Bu, kendi başlarına yaratılamayacakları anlamına gelir; bu nedenle, bir Paragraf nesnesi (paragraf), içerdiği belgeden ayrı olarak oluşturulamaz.

Word'ün asıl amacının belgelerle çalışmak olduğunu hatırlarsak, nesne modelinin hiyerarşisini kolayca anlayabiliriz (bir parçası Şekil 1'de gösterilmiştir). İçindeki ana nesne, diğer tüm Microsoft Office uygulamalarında olduğu gibi, Document türündeki nesnelerin Documents koleksiyonunu içeren Application nesnesidir. Document türündeki her nesne, Paragraf Paragrafları, Yer İmi Yer İmleri, Karakter Karakterleri vb. koleksiyonu içerir. Belgelerin, paragrafların, sembollerin, yer imlerinin manipülasyonu aslında bu nesnelerin özelliklerine ve yöntemlerine erişilerek gerçekleştirilir.

Aşağıda, Microsoft Word'ün otomatikleştirilmesiyle ilgili en yaygın görevlere bakacağız. Yukarıdakilerden herhangi birine uymayan bir görevle karşılaşırsanız, VBAWRD9.CHM yardım dosyasında uygun bir Visual Basic örneği bulmaya çalışabilir veya yukarıda belirtildiği gibi gerekli işlem sırasını aşağıdaki şeklinde yazabilirsiniz. bir makro ve kodunu analiz edin.

Microsoft Word belgeleri oluşturun ve açın

Microsoft Word kullanım örnekleri oluşturmak için yukarıdaki denetleyici oluşturma kodunu kullanabilir ve yorumları Word.Application nesnesinin özelliklerini ve yöntemlerini yöneten kodla değiştirerek değiştirebilirsiniz. Belgeler oluşturup açarak başlayacağız.

Application nesnesinin Documents koleksiyonunun Add yöntemini kullanarak yeni bir Word belgesi oluşturabilirsiniz:

Uygulama.Belgeler.Add;

Özel bir belge nasıl oluşturulur? Çok basit - Şablon adını Add yönteminin bir parametresi olarak belirtmeniz gerekir:

App.Documents.Add('C:\Program Files\ _ Microsoft Office\Templates\1033\Manual.dot');

Mevcut bir belgeyi açmak için Belgeler koleksiyonunun Aç yöntemini kullanın:

App.Documents.Open('C:\MyWordFile.doc');

Word.Application nesnesinin ActiveDocument özelliğinin, bir veya daha fazla açık belge arasından o anda etkin olan belgeye işaret ettiğini unutmayın. Ayrıca, Kalem yöntemi kullanılarak seri numarasına göre bir belgeye erişilebilir; örneğin, ikinci açık belgeye şu şekilde erişilebilir:

Uygulama.Belgeler.Öğe(2)

Microsoft Office'te koleksiyon üyelerinin numaralandırılmasının birden başladığını unutmayın.

Etkinleştir yöntemini kullanarak bir belgeyi etkin hale getirebilirsiniz:

App.Documents.Item(1).Activate;

Öğrenilecek bir sonraki şey, Word belgesini kaydetmek ve Word'ün kendisini kapatmaktır.

Microsoft Word belgelerini kaydetme, yazdırma ve kapatma

App.Documents.Item(2).Close;

App.ActiveDocument.Close ;

Kapat yöntemi, belgenin nasıl kaydedildiğini etkileyen birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir. Bunlardan ilki, belgede yapılan değişikliklerin kaydedilip kaydedilmediğini etkiler ve üç olası değeri alır (ilgili sabitlerin ekte açıklanması önerilir. Liste 2'ye bakın):

Üçüncü parametre Doğru veya Yanlış'tır ve belgenin bir sonraki kullanıcıya e-postayla gönderilip gönderilmeyeceğini kontrol eder. Bu işlev kullanılmazsa, bu ayarı yok sayabilirsiniz.

Böylece, bu seçenekleri kullanırken belgeyi örneğin şu şekilde kapatabilirsiniz:

App.ActiveDocument.Close(wdSaveChanges, _ wdPromptUser) ;

App.ActiveDocument.Save;

Bu yöntem ayrıca birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir; bunlardan ilki belge otomatik olarak kaydedilirse True ve (varsa) kullanıcıdan değişiklikleri onaylamasını istemek için bir iletişim kutusu görüntülenmesi gerekiyorsa False olur. kurtarıldı. İkinci parametre, kaydedilen belgenin biçimini etkiler ve bunun için olası değerlerin listesi, Kapat yönteminin ikinci parametresinin değer listesiyle aynıdır.

Hatırlatma olarak, Word.Application nesnesinin Quit yöntemini kullanarak Word'ün kendisini kapatabilirsiniz. Bu yöntem genellikle Document nesnesinin Close yöntemiyle aynı olan üç parametreye sahiptir.

Document nesnesinin PrintOut yöntemini kullanarak bir belgenin çıktısını bir yazdırma aygıtına verebilirsiniz, örneğin:

App.ActiveDocument.PrintOut;

Yazdırma ayarlarını değiştirmeniz gerekirse, PrintOut yönteminin karşılık gelen parametrelerinin değerlerini belirtmelisiniz (Microsoft Word durumunda, yaklaşık yirmi tane vardır).

Bir belgeye metin ve nesneler ekleme ve metni biçimlendirme

Bir belgede paragraflar oluşturmak için, belgedeki paragraf kümesini temsil eden Belge nesnesinin Paragraflar koleksiyonunu kullanabilirsiniz. Bu koleksiyonun Add yöntemini kullanarak yeni bir paragraf ekleyebilirsiniz:

App.ActiveDocument.Paragraphs.Add;

Ancak asıl metni belgeye eklemek için kullanılan Paragraph nesnesi değil, belgenin herhangi bir sürekli bölümünü temsil eden Range nesnesidir (yeni oluşturulan paragraf dahil). Bu nesne farklı şekillerde oluşturulabilir. Örneğin, bir aralığın başlangıç ​​ve bitiş karakterlerini belirtebilirsiniz (belgede varsa):

VarRng: ​​​​Varyant; ...Rng:= App.ActiveDocument.Range(2,4); // 2. karakterden 4. karaktere kadar

veya paragraf numarasını belirtin (örneğin, yeni oluşturuldu):

Rng:= App.ActiveDocument.Paragraphs.Item(1).Range;

veya arka arkaya birkaç paragraf belirtin:

Rng:= App.ActiveDocument.Range _(App.ActiveDocument.Paragraphs.Item(3).Range.Start,_ App.ActiveDocument.Paragraphs.Item(5).Range.End)

InsertBefore (aralıktan önce) veya InsertAfter (aralıktan sonra) Range nesne yöntemlerini kullanarak metin ekleyebilirsiniz, örneğin:

Rng.InsertAfter('Bu eklenecek metindir');

Range nesnesine ek olarak, belgenin seçilen bölümünü temsil eden Word.Application nesnesinin bir özelliği olan Selection nesnesi kullanılarak metin eklenebilir (bu nesne, kullanıcı fare ve ayrıca bir denetleyici uygulaması kullanılarak da oluşturulabilir). Selection nesnesinin kendisi, Select yöntemi Range nesnesine şu şekilde uygulanarak oluşturulabilir:

Var Sel: Varyant; ... App.ActiveDocument.Paragraphs.Item(3).Range.Select;

Yukarıdaki örnekte, geçerli belgede üçüncü paragraf vurgulanmıştır.

Belgeye, bir metin seçimi yerine veya ondan önce bir metin satırı eklemek istersek, bu, aşağıdaki kod parçacığı ile yapılabilir:

Var Sel: Varyant; ... Seç:= Uygulama Seçimi; Sel.TypeText('Seçimi _ ile değiştireceğimiz metin budur');

Word.Application nesnesinin Options.ReplaceSelection özelliği True ise, seçilen metnin yeni metinle değiştirileceğini unutmayın (bu varsayılan moddur); metnin onun yerine değil de seçimden önce eklenmesini istiyorsanız, bu özelliği False olarak ayarlamanız gerekir:

App.Options.ReplaceSelection:= Yanlış;

Selection nesnesi kullanılırken paragraf sonu karakteri, aşağıdaki kod parçacığı kullanılarak eklenebilir:

SelTypeParagraph;

InsertBefore ve InsertAfter yöntemlerini, Range nesnesinin yanı sıra Selection nesnesine de uygulayabilirsiniz. Bu durumda, öncekinden farklı olarak eklenen metin, seçilen metin parçasının bir parçası olacaktır.

Selection nesnesiyle, Font özelliğini ve Bold, Italic, Size,… gibi Font nesnesi özelliklerini kullanarak metni biçimlendirebilirsiniz. Örneğin, bu şekilde kalın harflerle bir satır ekleyebilirsiniz:

Sel.Font.Bold:= Doğru; Sel.TypeText('Bu _bold yazacağımız metindir.'); Sel.Font.Bold:= Yanlış; SelTypeParagraph;

Eklenen metne önceden tanımlanmış bir stil uygulamak için aynı nesnenin Stil özelliğini kullanabilirsiniz, örneğin:

Sel.Style:= 'Başlık 1'; Sel.TypeText('Bu _ başlık olacak metindir'); SelTypeParagraph;

Word belgelerinin diğer uygulamalardan veri içermesi nadir görülen bir durum değildir. Bu tür verileri bir belgeye yapıştırmanın en kolay yolu, Range nesnesinin Yapıştır yöntemini kullanmaktır:

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Collapse(wdCollapseEnd); Rng.Yapıştır;

Doğal olarak, bu durumda pano zaten yapıştırılacak verileri içermelidir.

Panoya bir Word belgesinin bir bölümünü yerleştirmeniz gerekiyorsa, bunu Range nesnesinin Kopyalama yöntemini kullanarak yapabilirsiniz:

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Kopyala;

Öğrenilecek bir sonraki şey, imleci metinde doğru yere nasıl taşıyacağımızdır, bir sonraki bölümde yapacağımız şey budur.

İmleci metnin üzerine taşı

Collapse yöntemini kullanarak, bir Range nesnesini veya bir Selection nesnesini, boyutunu sıfır karaktere indirerek "sıkıştırabilirsiniz":

Rng.Collapse(wdCollapseEnd);

Bu yöntemin parametresi, yeni Range veya Selection nesnesinin orijinal parçanın başında mı yoksa sonunda mı görüneceğini belirtir. Geç bağlama kullanıyorsanız ve geliştirme aracınız Visual Basic değilse, uygulamanızda uygun sabitleri tanımlamanız gerekir:

Const wdCollapseStart = $00000001; //yeni nesne parçanın başında wdCollapseEnd = $00000000; // yeni nesne parçanın sonunda

Range ve Selection nesnelerinin Move yöntemini kullanarak imleci metnin üzerine taşıyabilirsiniz. Bu yöntemin iki parametresi vardır. İlk parametre hareketin hangi birimlerde ölçüldüğünü gösterir - karakterler (varsayılan olarak), kelimeler, cümleler, paragraflar, vb. İkinci parametre bu durumda kaç birim hareket edeceğini gösterir (bu sayı negatif olabilir; varsayılan olarak 1) Örneğin, aşağıdaki kod parçası:

Rng.Move;

imleci bir karakter ileriye taşır ve

Rng.Move(wdParagraph,3);

imleci üç paragraf ileriye taşır. Bu yöntemin aşağıdaki sabitleri kullandığını unutmayın:

Const //Hareket birimi: wdCharacter = $00000001; //karakter wdWord = $00000002; //kelime wdSentence = $00000003; //cümle wdParagraph = $00000004; //paragraf wdStory = $00000006; //belge bölümü //örneğin, altbilgi, //içindekiler, vb.) wdSection = $00000008; //bölüm wdColumn = $00000009; //tablo sütunu wdRow = $0000000A; //tablo satırı wdCell = $0000000C; //tablo hücresi wdTable = $0000000F; //masa

Yer imleri genellikle metin içinde gezinmek için kullanılır. Add yöntemini kullanarak Document nesnesinin Bookmarks koleksiyonunun bir üyesini ekleyerek, yer iminin adını parametre olarak ileterek, geçerli imleç konumunda bir yer imi oluşturabilirsiniz, örneğin:

App.ActiveDocument.Bookmarks.Add('MyBookmark');

Exists yöntemini kullanarak belgedeki bir yer iminin varlığını kontrol edebilir ve Document, Range veya Selection nesnelerinin Goto yöntemini kullanarak ona gidebilirsiniz:

Rng:= App.ActiveDocument.Goto(wdGoToBookmark, wdGoToNext,'MyBookmark'); Rng.InsertAfter('Metin yer iminden sonra eklendi');

Bu örnek için sabit değerler şunlardır:

WdGoToBookmark = $FFFFFFFF; // yer işaretine git wdGoToNext = $00000002; // metinde sonraki nesneyi ara

Goto yöntemini kullanarak, yalnızca belirtilen yer imine değil, aynı zamanda diğer nesnelere (resimler, dilbilgisi hataları vb.) Hareket edebileceğinizi ve hareket yönünün de farklı olabileceğini unutmayın. Bu nedenle, bu yöntemin parametresi olarak kullanılabilecek sabitlerin listesi oldukça büyüktür.

Tablo oluşturma

Tablo oluşturmanın iki yolu vardır. Birincisi Document nesnesinin Tables koleksiyonunun Add yöntemini çağırmak ve hücreleri sırayla verilerle doldurmaktır. Bu geç bağlama yöntemi oldukça yavaştır.

İkinci yol, çok daha "hızlı", sınırlayıcılı alt dizeler içeren birkaç satırdan metin oluşturmaktır (herhangi bir veya hemen hemen her karakter sınırlayıcı olarak kullanılabilir, yalnızca bunun veride oluşmadığını bilmeniz gerekir). gelecek tablosuna yerleştirilir) ve ardından bu tür metni Range nesnesinin ConvertToTable yöntemini kullanarak bir tabloya dönüştürmek. Aşağıdaki, bu şekilde üç satır ve üç sütunlu bir tablo oluşturmaya bir örnektir (ayırıcı olarak virgül kullanılır, bu ConvertToTable yönteminin ilk parametresidir):

VarRng: ​​​​Varyant; ... Rng:= App.Selection.Range; Rng.Collapse(wdCollapseEnd); Rng.InsertAfter('1, 2, 3'); Rng.InsertParagraphAfter; Rng.InsertAfter('4,5,6'); Rng.InsertParagraphAfter; Rng.InsertAfter('7,8,9'); Rng.InsertParagraphAfter; Rng.ConvertToTable(',');

Bir tablonun görünümünün, Format özelliği kullanılarak ve ayrıca tablonun sütunlarını temsil eden Columns koleksiyonunun ve Table nesnesinin tablo satırlarını temsil eden Rows koleksiyonunun özellikleri kullanılarak değiştirilebileceğini unutmayın.

Belge Özelliklerine Erişme

Belge özellikleri, Document nesnesinin BuiltInDocumentProperties koleksiyonu kullanılarak alınabilir, örneğin:

Memo1.Lines.Add('Title -' + _ App.ActiveDocument.BuiltInDocumentProperties .Value); Memo1.Lines.Add('Yazar -' + _ App.ActiveDocument.BuiltInDocumentProperties . _ Değer); Memo1.Lines.Add('Template -' + _ App.ActiveDocument.BuiltInDocumentProperties . _Value)

Belge özelliklerine ada göre erişmek için gereken sabitler Liste 3'te gösterilmektedir.

Bu bölümde, Microsoft Word'ü otomatikleştirirken en sık kullanılan temel işlemleri inceledik. Doğal olarak, Word otomasyonunun olanakları verilen örnekler tarafından tükenmekten uzaktır, ancak umarım bu makalede ve ilgili yardım dosyasında ana hatlarıyla verilen Word denetleyicileri oluşturmanın temel ilkelerinin rehberliğinde bunları kullanabileceksiniz - biz zaten bunun hiç de zor olmadığını gördük.Programlı tanımlayıcılar ve Microsoft Excel nesne modeli

Doğrudan denetleyici uygulamasından oluşturulabilen üç tür Excel nesnesi vardır. Bu nesneler ve bunlara karşılık gelen programatik tanımlayıcılar aşağıda listelenmiştir.

Diğer tüm Excel nesneleri dahili nesneler olarak adlandırılır.

Microsoft Excel nesne modelinin küçük bir parçası Şekil 2'de gösterilmektedir:

Excel nesne modelinin merkezinde, Çalışma Kitabı türündeki nesnelerin bir Çalışma Kitapları koleksiyonunu içeren Uygulama nesnesi bulunur. Çalışma Kitabı türünün her nesnesi, Çalışma Sayfası türünden bir Çalışma Sayfaları-nesneleri, Grafik türündeki Grafikler vb. içerir. Çalışma kitapları, bunların sayfaları, hücreleri, çizelgeleri aslında bu nesnelerin özelliklerine ve yöntemlerine erişilerek değiştirilir.

Aşağıda, Microsoft Excel'in otomatikleştirilmesiyle ilgili en yaygın görevlere bakacağız. Yukarıdakilerden herhangi birine uymayan bir görevle karşılaşırsanız, VBAXL9.CHM yardım dosyasında uygun bir Visual Basic örneği bulmaya çalışabilir veya Microsoft Word örneğinde olduğu gibi ilgili makroyu kaydedip analiz edebilirsiniz. kod.

Microsoft Excel'in başlatılması, çalışma kitaplarının oluşturulması ve açılması

Microsoft Excel kullanım örnekleri oluşturmak için, "Otomasyon Denetleyicileri Oluşturmak için Genel İlkeler" bölümünde sağlanan denetleyici oluşturma kodunu, örnekteki ilk ifadeyi aşağıdakiyle değiştirerek kullanabilirsiniz:

AppProgID:= 'Excel.Application';

ve yorumları Excel.Application nesnesinin özelliklerini ve yöntemlerini yöneten kodla değiştirin. Ancak, GetActiveOleObject yöntemini kullanarak bir otomasyon denetleyicisini mevcut bir Excel sürümüne bağlamanın tüm Excel istemci tarafının görünmez olmasına neden olabileceğini unutmayın (bu, Excel'in mevcut kopyası, kullanıcı arabiriminin kullanılamadığı bir modda çalışıyorsa gerçekleşir). ). Bu davranışın nedenleri yazar tarafından bilinmemektedir. Bu nedenle, böyle bir durum olasılığı varsa, denetleyici oluşturma kodunu basitleştirmek ve her zaman yeni bir Excel kopyası oluşturmak daha iyidir.

Çalışma kitapları oluşturup açarak Excel denetleyicilerinin nasıl oluşturulacağını öğrenmeye başlayacağız.

Uygulama nesnesinin Çalışma Kitapları koleksiyonunun Ekle yöntemini kullanarak yeni bir Excel çalışma kitabı oluşturabilirsiniz:

App.WorkBooks.Add;

Şablona dayalı bir çalışma kitabı oluşturmak için, Add yönteminin ilk parametresi olarak adını belirtin:

App.WorkBooks.Add('C:\Program Files\Microsoft _ Office\Templates\1033\invoice.xlt');

Bu yöntemin ilk parametresi olarak aşağıdaki sabitleri de kullanabilirsiniz:

Sabit xlWBATChart = $FFFFFF3; //çalışma kitabı grafik sayfasından oluşur xlWBATÇalışma sayfası = $FFFFEFB9; //çalışma kitabı veri sayfasından oluşur

Bu durumda, çalışma kitabı, belirtilen sabit (grafik, normal veri sayfası, vb.)

Halihazırda var olan bir belgeyi açmak için Çalışma Kitapları koleksiyonunun Aç yöntemini kullanın:

App.Documents.Open('C:\MyExcelFile.xls');

Excel.Application nesnesinin ActiveWorkBook özelliğinin, bir veya daha fazla açık olanlardan o anda etkin olan çalışma kitabına işaret ettiğini unutmayın. Ek olarak, çalışma kitabına seri numarasından erişilebilir, örneğin ikinci açık çalışma kitabına şu şekilde erişilebilir:

Uygulama.Çalışma Kitapları

Delphi'de geç bağlama kullanırken, Excel nesneleri koleksiyonlarının üyelerine atıfta bulunmak için kullanılan sözdiziminin Word nesnelerine atıfta bulunmak için kullanılan sözdiziminden farklı olduğunu unutmayın - Word durumunda, Item yöntemini kullandık ve bu durumda Excel'de, üye koleksiyonlarına dizi öğeleri olarak atıfta bulunuruz. Ancak Visual Basic kullanıyorsanız, koleksiyon üyelerine erişim sözdizimi tüm Microsoft Office koleksiyonları için aynıdır.

Activate yöntemini kullanarak bir çalışma kitabını aktif hale getirebilirsiniz:

App.WorkBooks.Activate;

Öğrenilecek bir sonraki şey, çalışma kitaplarının dosyalara nasıl kaydedileceğidir.

Microsoft Excel Çalışma Kitaplarını Kaydetme, Yazdırma ve Kapatma

Bir belgeyi kapatmak, Kapat yöntemi kullanılarak yapılabilir:

App.WorkBooks.Close;

App.ActiveWorkBook.Close;

Kapat yöntemi, çalışma kitabının kaydedilme şeklini etkileyen birkaç isteğe bağlı (geç bağlama durumunda) parametreye sahiptir. Seçeneklerden ilki Doğru veya Yanlış'tır ve çalışma kitabında yapılan değişikliklerin kaydedilip kaydedilmeyeceğini etkiler. İkinci parametre (Varyant türünde), çalışma kitabının kaydedilmesi gereken dosyanın adıdır (değişiklik yapılmışsa). Yine True veya False olarak ayarlanan üçüncü parametre, belgenin bir sonraki kullanıcıya e-postayla gönderilip gönderilmeyeceğini etkiler ve bu işlev kullanılmazsa yoksayılabilir.

App.ActiveWorkBook.Close(True,'C:\MyWorkBook.xls');

App.ActiveWorkBook.Save;

App.ActiveWorkBook.SaveAs('C:\MyWorkBook.xls');

SaveAs yöntemi, belgenin nasıl kaydedildiğini etkileyen bir düzineden fazla parametreye sahiptir (hangi adla, şifreli veya şifresiz, içerdiği metnin kod sayfası nedir, vb.).

Excel.Application nesnesinin Quit yöntemini kullanarak Excel'in kendisini kapatabilirsiniz. Excel durumunda, bu yöntemin parametresi yoktur.

WorkBook nesnesinin PrintOut yöntemini kullanarak bir Excel belgesinin çıktısını bir yazdırma aygıtına verebilirsiniz, örneğin:

App.ActiveWorkBook.PrintOut;

Yazdırma ayarlarını değiştirmeniz gerekirse, PrintOut yönteminin karşılık gelen parametrelerinin değerlerini belirtmelisiniz (Excel durumunda bunlardan sekiz tane vardır).

Referans Sayfaları ve Hücreler

Çalışma sayfalarına, WorkBook nesnesinin WorkSheets koleksiyonu kullanılarak erişilir. Bu koleksiyonun her üyesi bir WorkSheet nesnesidir. Bu koleksiyonun bir üyesine dizin numarasından erişilebilir, örneğin:

App.WorkBooks.WorkSheets.Name:= _ 'Sayfa 1';

Yukarıdaki örnek, çalışma kitabı sayfası adını nasıl değiştirebileceğinizi gösterir.

Ayrıca bir çalışma kitabı sayfasına ada göre de başvurabilirsiniz, örneğin:

App.WorkBooks.WorkSheets['Sheet1'].Name:= _ 'Sayfa 1';

Bir sayfanın tek tek hücrelerine, WorkSheet nesnesinin Cells koleksiyonu kullanılarak erişilir. Örneğin, B1 hücresine şu şekilde veri ekleyebilirsiniz:

App.WorkBooks.WorkSheets['Sheet1'].Cells.Value:='25';

Burada, hücre koordinatlarından ilki satır numarasını, ikincisi - sütun numarasını gösterir.

Hücrelere formül eklemek benzer şekilde yapılır:

App.WorkBooks.WorkSheets['Sheet1'] _ .Cells.Value:= ' =SUM(B1:B2)';

ClearContents yöntemini kullanarak bir hücreyi temizleyebilirsiniz.

Hücrelerdeki metni biçimlendirme, Cell nesnesinin Font ve Interior özellikleri ve bunların alt özellikleri kullanılarak yapılır. Örneğin, aşağıdaki kod parçacığı, bir hücredeki metni sarı bir arka plan üzerinde kırmızı 16 noktalı Courier'de kalın olarak işler:

App.WorkBooks.WorkSheets.Cells.Interior _ .Color:= clYellow; App.WorkBooks.WorkSheets.Cells.Font _ .Color:= clRed; App.WorkBooks.WorkSheets.Cells _ .Font.Name:= 'Kurye'; App.WorkBooks.WorkSheets.Cells _ .Font.Size:= 16; App.WorkBooks.WorkSheets.Cells _ .Font.Bold:= Doğru;

Program tanımlayıcısı

Belirli prosedürleri otomatikleştirmek için program kodu oluşturmak, Excel tabanlı uygulamaları geliştirmek ve kullanmak için neredeyse sınırsız olanaklar sunar.

Makro Kaydı

Kullanıcının karşılaştığı ilk otomasyon aracı makro kayıt olarak adlandırılan işlemdir. Bu girişi ekledikten sonra Excel, kullanıcı tarafından gerçekleştirilen bir dizi işlemle program kodunu otomatik olarak oluşturur.

Çözümün özgünlüğünü değerlendirirken, bu işlevin pratik kullanımı bizim açımızdan çok şüphelidir. Gerçek şu ki, nadir istisnalar dışında, kaydedilmiş bir makroyu değişiklik yapmadan yeniden kullanmak imkansızdır. Eğitimsiz bir kullanıcı genellikle yalnızca bir dizi komut görür, ancak kaydedilen makrodan beklenen sonucu almaz. Ayrıca, kullanıcının VBA'da program yazma kolaylığı konusunda hatalı bir görüşü vardır.

Gerçek programlamanın makroları kaydetmekle hiçbir ilgisi yoktur. Hem programlama dilinin temellerini bilmek hem de Excel'in nesne modelini incelemek gerekir. Bu arada, sadece ikinci durumda, "kayıt makrosu" işlevi, yardım sistemine ek olarak bir miktar kullanımdadır. Otomatik olarak yazılan kodda, bir Excel nesnesinin istediğiniz özelliklerini veya yöntemlerini hızlı bir şekilde bulabilirsiniz.

Makrolar Excel 4.0

Pratikte çok az kişi bununla karşılaştı, ancak Excel 4.0 sürümünde makrolar oluşturmak ve dizilerini yürütmek mümkün oldu. Bu amaç için özel bir çalışma kitabı sayfası vardır. Excel 4.0 makroları (XLM) şimdiye kadarki tüm sürümlerde desteklenmektedir.

"Uluslararası makro sayfası" eklemeyi deneyin ve içine 2 komut yazın (resme bakın). Ardından hücreyi belirterek bu makroyu çalıştırın (makroları çalıştırmanın en kolay yolu klavye kısayoludur Alt+F8):

Komutları İngilizce olarak kaydetmek için "Uluslararası Makro Sayfası" gereklidir, ayrıca Rusça komutların analogları da vardır.

XLM makroları, o sırada uygulanan tüm Excel komutlarını yürütmenize ve ayrıca iletişim kutuları oluşturmanıza ve açmanıza olanak tanır. 1990'ların sonlarından bu yana Microsoft, Excel uygulamalarındaki XLM makrolarının VBA programlarına yeniden yazılmasını şiddetle tavsiye etti. Ancak, eski makroların işlevselliği hala tam olarak desteklenmektedir.

Uygulamalar 5.0 için Visual Basic

Excel'in Visual Basic for Applications programlama dilini destekleyen ilk sürümü 1993 - Excel 5.0'da çıktı. Başlangıçta, kod düzenleyici, özel bir çalışma kitabı sayfası türüydü.

Excel'in tam nesne modeli desteklendi, kullanıcı kodu program modüllerine ayırabilirdi. İlk kez, diyalog formlarını görsel olarak oluşturma ve değiştirme yeteneği ortaya çıktı - bir koleksiyon İletişim Sayfaları. Bu formlar için kendi olay işleyicilerine sahip kontroller vardır, formların kendileri sadece modal modda açılabilir. DialogSheets kullanarak, oldukça karmaşık kullanıcı arabirimi seçenekleri oluşturmak zaten mümkündü. Gelecekte, DialogSheets işlevi özel formlarla değiştirildi. Kullanıcı Formları. Excel 2000 ile başlayan sürümlerdeki eski iletişim formları yalnızca geriye dönük uyumluluk için desteklenir - yardım sisteminde açıklamaları bile yoktur.

VBA6

Excel 2000 (sürüm 9.0), Visual Basic for Applications dilinin yeni bir sürümünü içerir. Özel sınıflar, formlar ve olay işleyici prosedürleri için destek ekledi. VBA dilinin sözdizimi, Microsoft Office'in ana uygulamalarıyla (Excel, Word, Access, PowerPoint) birleştirilmiştir. Belki biraz öne çıkan, kendi form düzenleyicisini destekleyen Microsoft Access'tir.

VBA6'nın ana yenilikleri:

  • Kullanıcı sınıfları.
  • Standart sayfa ve çalışma kitabı olay işleyicilerine erişim.
  • Bir anahtar kelime kullanarak olayları işleme yeteneği Olaylar ile.
  • Özel Formlar Kullanıcı Formları yeni kontrollerle.
  • Harici ActiveX denetimlerini ve kod kitaplıklarını kullanma yeteneği.
  • Birkaç yeni kullanışlı özellik (örneğin, Katılmak ve Bölmek).

Ayrıca, VBA'nın yeni sürümüne dayalı olarak, COM DLL'lerinin oluşturulmasını destekleyen geliştiriciler için Excel'in özel sürümleri vardı. Daha fazla ayrıntı için makaleye bakın eklentiler.

Harici Kitaplıkları Kullanma

COM DLL (ActiveX DLL) formatının harici kitaplıkları, VBA projesindeki (menü) bağlantılar kullanılarak bağlanır. Araçlar\Referanslar). Görsel kontroller (.ocx dosyaları), menü öğesi T seçilirken benzer şekilde bağlanır ools\Ek Kontroller. Harici dosyalara bağlantılar kullanırken, diğer bilgisayarlara dağıtıldığında projenin bütünlüğüne özellikle dikkat etmeniz gerekebilir. Standart kitaplıklar (örneğin, MSCOMCTL.OCX) genellikle en son sürüme otomatik olarak bir bağlantı alarak istemci bilgisayarlarda doğru şekilde yeniden bağlanır. Standart olmayan kitaplıklar ve yerel ActiveX denetimleriyle ilgili sorunlar ortaya çıkabilir. Harici COM DLL'lerinin bağlantısını kontrol etmek için teorik olarak koleksiyonu kullanabilirsiniz. Application.VBE.ActiveVBProject.References. Ancak pratikte, VBE nesnesini uygulamalarda kullanmamak daha iyidir, çünkü ona erişim Excel ayarlarıyla sınırlandırılabilir (sürüm 2007'den itibaren).

COM teknolojisi, sabit bağlantılar kullanmadan harici kitaplıklara ve uygulamalara erişim sağlamanıza olanak tanır. Bunun için sözde geç nesne bağlama kullanılır. Arayüz olarak Bilinmeyen VBA'ya yazın Nesne; standart prosedür bir nesneyi başlatmak için kullanılır CreateObject ve mevcut bir örneği almak için - GetObject.

Dim oWord As Object Set oWord = CreateObject("Word.Document") oWord.Application.Visible = True

Herhangi bir VBA sürümünde Windows dinamik kitaplıklarının (Win32 DLL) işlevlerini ve prosedürlerini çağırmak için yapı desteklenir bildirmek. Örneğin:

Public Bildiri Fonksiyonu GetUserName Lib "advapi32.dll" Takma Ad "GetUserNameA" (ByVal sBuf As String, ByRef iSize As Long) Boolean Olarak

Böyle bir bildirimden sonra, işlev herhangi bir VBA işlevi gibi olağan şekilde çağrılabilir.

Standart Win API prosedürleri ve işlevlerine ek olarak kendi DLL'lerinizi geliştirebilir ve benzer şekilde VBA projelerine dahil edebilirsiniz.

VSTO

Microsoft, diğer geliştirici ürünlerinde Excel otomasyonu sağlar. Örneğin, Microsoft Office için uyarlanmış bir Visual Basic 6.0 ActiveX DLL proje şablonu var. Microsoft şu anda Office için Visual Studio Tools (VSTO) adlı .NET tabanlı bir uygulama geliştirme akışını desteklemektedir. VSTO, çeşitli Microsoft Office uygulamaları için kitaplıklar ve eklentiler geliştirmeye yönelik bir dizi proje şablonu ve Visual Studio .NET çalışma zamanı aracıdır.

Excel için bir .NET projesi için örnek bir kaynak kodu şu adreste bulunabilir: Başka.

Harici Uygulamalar için Excel Otomasyonu

Harici COM DLL'lerini çağırmak gibi, Excel'in kendisi de diğer programlar için bir otomasyon nesnesi olabilir. Örneğin, vbs komut dosyalarını kullanarak bir çalışma kitabını arayabilir ve değiştirebilirsiniz. Örneğin, aşağıdaki içeriğe sahip bir metin dosyası oluşturun:

Set oExcelApp = CreateObject("Excel.Application") oExcelApp.Visible = True Set oWorkbook = oExcelApp.Workbooks.Add Set oWorkbook = oWorkbook.Worksheets.Add oWorksheet.Cells(1,1)="Merhaba"

Bu dosyayı vbs uzantılı kaydedin ve açın. Başarılı bir başlatmanın ardından, Excel açılacak, sol üst hücrede "Merhaba" metninin görüneceği bir çalışma kitabı ve sayfa oluşturulacaktır. Benzer şekilde, Excel dosyalarını işleyen çok karmaşık programlar oluşturabilirsiniz. Kodu bir vbs komut dosyasına (veya başka bir uygulamaya) aktarırken, başlangıçta kodu Excel'in VBA düzenleyicisinde oluşturmak ve hatalarını ayıklamak daha uygundur - yerleşik nesnelerin yöntemlerinin ve özelliklerinin sözdizimi hakkında tam bilgi içerir. Bu bağlamda, nesnelere erişmek için tam yolları kullanmak için VBA'da programlama yaparken iyi bir uygulamadır: örneğin, aktif çalışma kitabı Reçetelemek Application.ActiveWorkbook. Bu programlama stili, kodu diğer uygulamalara taşırken sizi gizli hatalardan kurtaracaktır.

Dosya Güvenliği

Kullanıcılar için endişe gösteren Microsoft, VBA ile yazılmış bilgisayar virüslerinin kazara yayılmasını önlemek için her yolu deniyor. Kendi deneyimlerimize dayanarak, bu tür bir "bakımın" kullanıcılara genellikle işlerinin güvenliğini artırmaktan daha fazla sorun getirdiğini varsayabiliriz. Excel dosyalarıyla çalışma pratiğimizde (1995'ten beri), makro virüslerle hiç tanışmadım Excel uygulamaları için özel olarak yazılmıştır. Aynı zamanda, bu tür virüsleri yazma olasılığını dışlamıyoruz (benzer bir şey yaratmayı bile deneyebiliriz), ancak neden birinin buna ihtiyaç duyduğu açık değil. Aynı betik dillerini kullanmak işletim sistemi için çok daha ciddi bir tehdittir. Visual Basic'in bilgisayar virüsleri yazmak için en iyi ortam olmadığından bahsetmiyorum bile.

Ancak, Microsoft'un potansiyel tehdit arayışında kendisini yeniden sigortalaması bile kötü değil. Excel-VBA proje güvenlik yönetiminin tutarsızlığı ve sürekli karmaşıklığı sinir bozucu. Ayrıca, güvenilir yayıncıların dijital imzalarının kullanımına yönelik açık bir eğilim vardır. Aynı zamanda, imzalama hakkının elde edilmesi ücretli bir hizmettir ve teknolojinin kendisinde Excel dosyalarıyla uygulanmasında hatalar vardır (daha fazla ayrıntı için sonraki bölüme bakın).

Güvenlik özelliklerinin tarihsel olarak nasıl değiştiği aşağıda açıklanmıştır:

  • Excel 4.0-7.0- tam olarak emin değilim, ancak makro virüslerine karşı koruma olmadığı görülüyor, makrolar ek uyarılar olmadan çalıştırıldı.
  • Excel 97 (8.0) - genel ayarlarda bir koruma onay kutusu belirdi.
  • Excel 2000 (9.0)– menüde özel bir diyalog belirdi Hizmet\Makrolarüç güvenlik seviyesinden biri ve bir güvenilir sertifika listesi seçeneği ile. Varsayılan olarak, güvenlik düzeyi orta düzeydedir. Yani, dosyaları makrolarla açarken, kullanıcının kendisinin ne kadar güvenli olduğuna karar vermesi istenir. Excel eklentileri, ek uyarılar olmadan varsayılan olarak etkinleştirilir.
  • Excel 2002 (10.0)- güvenilir bir yayıncı tarafından ve yalnızca güvenilir kaynaklardan imzalanan makroların yürütülmesine izin veren başka bir "en yüksek" güvenlik düzeyi eklendi. Varsayılan olarak, güvenlik düzeyi orta düzeydedir.
  • Excel 2003 (11.0)– önceki sürümdekiyle aynıdır, ancak güvenlik seviyesi varsayılan olarak yüksek olarak ayarlanmıştır. Yani makrolar uyarı yapılmadan devre dışı bırakılır.
  • Excel 2007 (12.0)- parametreler arayüzü yeniden yazıldı, sözde "Güvenlik Kontrol Merkezi" belirdi. Güvenlik seviyeleri davranışta değişti, ancak hala dört tane var. Varsayılan olarak, makro içeren bir dosyayı açtığınızda, şeridin altında makroları etkinleştirme özelliğine sahip bir pencere görünür. Göreceli olarak konuşursak, bu aynı makro bağlantı diyaloğudur, ancak modsuz olarak açılır. Bir yandan, çözüm arayüz açısından çekici görünüyor, ancak eski sürümlerle uyumsuzluğa yol açabilir: örneğin, kullanıcı bir süre makrolar olmadan çalışabilir ve ardından bunları etkinleştirebilir. VBE nesnesini varsayılan olarak devre dışı bırakılan kod düzeyinde kontrol edebilmek için ayrı bir seçenek vardır. Ayrıca, Excel eklentilerinin güvenliği, varsayılan olarak ek sorular olmadan hala bağlı olan ayrı olarak yapılandırılır.

Kendi Excel uygulamalarınızı geliştirirken ve dağıtırken bu özelleştirme farklılıklarını göz önünde bulundurun.

Bizim açımızdan güvenlik ayarındaki zayıf nokta, tüm ayarların Windows sistem kayıt defterinde açık olarak saklanması ve teorik olarak diğer uygulamalar çalışırken bunları değiştirmenin zor olmamasıdır. Genellikle bu, Excel uygulamaları için yükleme programları tarafından yapılır.

VBA Sertifikaları

Microsoft Office 2000 ile birlikte, makrolarda ve eklentilerde VBA yürütülebilir kodunu imzalamanıza olanak tanıyan MicrosoftAuthenticode teknolojisi kullanılabilir hale geldi. Bir çözüm geliştiricisi için bu, programları belirli bir güvenlik düzeyiyle çalıştırma yeteneği anlamına gelir. Yüksek ve Çok uzun.

Dijital imzalar, dağıtılmış çözümlerin bütünlüğünü korur (sertifikanın sahibi dışında hiç kimse imzalı kodda değişiklik yapamaz) ve geliştiricinin kimliğini doğrular (çözümün yazarını açık bir şekilde tanımlayın).

Sertifika almak için birkaç seçenek vardır:

  • Kendinden imzalı sertifika
  • Yerel CA'dan sertifika
  • ticari sertifika

Kendinden imzalı bir sertifika kullanma olanakları esas olarak kişisel kullanımla sınırlıdır. Bir sertifika hatasıyla ilgili sürekli bir uyarıdan kaçınmak için, onu güvenilir kaynaklar listesine eklemeniz gerekir.

Yerel bir sertifika yetkilisi varsa (örneğin bir kuruluş içinde), bu yetkili tarafından verilen sertifikalar oluşturmak mümkündür. Active Directory ile, imzalı kodun güvenilir olarak tanımlanmasına izin verecek şekilde, kök sertifikayı kullanıcıların bilgisayarlarına dağıtmak mümkündür. Yerel bir sertifika yetkilisi oluşturmak için Windows Server Sertifika Hizmetleri'ni (Sertifika Hizmetleri) kullanabilir veya OpenSSL paketine dayalı çözümleri kullanabilirsiniz.

Microsoft Office tabanlı en geniş çözüm dağıtımına ihtiyacınız varsa, kod imzalama (Kod İmzalama) için ticari bir sertifika satın almanız önerilir. Tanınmış sertifika yetkililerinin kullanılması, kullanıcıların ürünü iyi tanımlanmış bir tedarikçiden ve değiştirilmemiş bir biçimde aldıklarından emin olmalarını sağlayacaktır.

Ancak, sertifikalarla çalışırken belirtilmesi gereken birkaç nokta vardır:

  • Sertifika, VBA projesinde değişiklik yapan tüm geliştiricilerin bilgisayarlarında gereklidir.
  • Bazen, kodu değiştirmeden bile imzalanmış bir projenin değiştirildiği kabul edildiğinde durumlar ortaya çıkar. Bu durumda makrolarla çalışmak imkansızdır ve bu durumdan çıkmanın tek yolu proje ayarlarındaki imzayı kaldırmaktır.

Sık sık MS Excel kullanıcısıysanız, muhtemelen her gün aynı tür işlemleri yapmanız gerekir. Bu durumda, Excel makroları, eylem sırasını bir dizi VBA komutu olarak kaydetmeye yardımcı olacaktır. Bu yöntem, basit görevleri otomatikleştirmek için mükemmeldir. Daha karmaşık görevler söz konusu olduğunda, programlama becerisine sahip kullanıcılar VBA projelerini kullanarak işlemleri otomatikleştirebilir.

Otomasyon eklentisi, Excel'deki rutin görevleri otomatikleştirmeye yönelik temelde yeni bir yaklaşım sunar:

  • Hacimli VBA projeleri yerine basit bir Excel elektronik tablosunda komutlar oluşturma
  • Karmaşık ve çok aşamalı operasyonların bile otomasyonu
  • XLTools'un otomasyon özellikleri: SQL sorguları, CSV'ye Aktarma, Tablo yeniden tasarımı vb.
  • Özel araç çubuğu düğmeleri oluşturma
  • İleri düzey kullanıcılar ve geliştiriciler için

VBA uzmanı olmanıza gerek yok. Excel'deki bazı iş süreçleriniz çok fazla zaman alıyorsa, XLTools ekibimiz bunları otomatikleştirmenize yardımcı olacaktır.

Excel 2019, 2016, 2013, 2010, 2007'ye "Otomasyon" ekleyin

Şunlar için uygundur: Microsoft Excel 2019 - 2007, masaüstü Office 365 (32 bit ve 64 bit).

Eklenti ile nasıl çalışılır:

VBA olmadan Excel'de işlemler nasıl otomatikleştirilir [Öğreticiyi İndir]

Çoğu zaman, Excel VBA makroları, çalışmak için çok uygun olmayan yüzlerce kod satırına kadar büyür. XLTools Automation eklentisi, basit ve kompakt Excel elektronik tablolarında komutlar yazmanıza olanak tanır. Tablo görünümü daha bilgilendirici, görsel ve düzenlemesi daha kolaydır. Kendi otomasyon komutlarınızı yürütmek için Excel araç çubuğuna özel düğmeler de ekleyebilirsiniz.

Otomasyon eklentisi, hemen hemen tüm komutları ve bunların sıralarını otomatikleştirmek için evrensel bir araçtır:

  • SQL sorgularının Excel tablolarına otomasyonu: SELECT, GROUP BY, JOIN ON, vb.
  • Pivot tabloların otomatik olarak düz bir listeye dönüştürülmesi
  • Excel tablolarının CSV dosyasına otomatik olarak aktarılması
  • Diğer Excel çalışma kitaplarından veya CSV dosyalarından otomatik veri çıkarma
  • Otomatik tablo filtreleme, vb.

Sadece öğreticiyi kullanarak komutu yazın > "Komutları Çalıştır" > Bitti! Sonucun oluşturulması yalnızca birkaç saniye sürecektir.

KILAVUZU İNDİR: örnekler, desenler, sözdizimi ve satır yorumları (zip/xlsx, 260 KB).

Örnek: SQL sorgusunu Excel tablolarında otomatikleştirme

Bir perakende mağaza örneğini düşünün. Üç aylık bir satış raporu hazırlamanız gerektiğini varsayalım. SQL Sorguları eklentisini kullanabilir ve kaynak verileri sorgulayabilirsiniz. Ancak düzenli olarak böyle bir rapor hazırlamanız gerekiyorsa, bu SQL sorgusu otomatikleştirilebilir.

1. SQL sorgusu için başlangıç ​​verilerini hazırlayın. Onlara bir tablo formatı uygulayın, aksi takdirde SQL verileri işleyemez:

  • "Fiyat Listesi ve Satış Veri Günlüğü" aralığını seçin.
  • Giriş sekmesinde Tablo Olarak Biçimlendir > Tablo Stilini Uygula'ya tıklayın.
  • Tasarım sekmesinde, tabloyu Sales2014 olarak adlandırın.

2. Otomatik Komutlar gibi yeni bir sayfa ekleyin ve bir SQL Otomasyon Komutu tablosu oluşturun:

  • XLTools.SQLSeçimi- takımın adını aynen bu şekilde girin. Başlık, birleştirilmiş iki hücrede olmalıdır.
  • SQLQuery - sorgu komutunu normal şekilde yazın. Eklentinin SQLite sözdizimini kullandığını unutmayın.
    İpucu: Sorgu metnini manuel olarak yazmak yerine, sezgisel SQL Sorgu Düzenleyicisini kullanın ve komut dosyasını otomasyon tablosuna kopyalayın.
  • ApplyTableName - sonuç tablosunun adını girin.
    Sorgu sonucu otomatik olarak bir tablo biçiminde oluşturulur. Gerekirse, bunun için sonraki istekleri oluşturabilirsiniz.
  • OutputTo - Sorgu sonucunun nereye yerleştirileceğini belirtin.

Dikkat: SQL'in tüm bağlantıları tanıması için çalışma sayfalarının, çalışma kitaplarının ve tabloların adlarında boşluk kullanmayın.

3. SQL otomasyon komutunu yürütün:

  • Bir otomasyon komut aralığı seçin > XLTools sekmesinde Komutları Çalıştır düğmesini tıklayın.
  • Bitti, sonuç saniyeler içinde oluşturulacak.
    Bu örnekte, SQL sorgusu 2014'ün 3. çeyreğine ilişkin verileri aldı.

4. Excel araç çubuğunda kendi düğmelerinizi oluşturun.

Her Excel çalışma kitabında, kendi otomasyon komutlarınıza bağlı 3 adede kadar özel düğme oluşturabilirsiniz:

  • XLTools sekmesinde "Düğmeler Oluştur" u tıklayın.
  • Düğmeye bir ad verin, örn. Üç Aylık Rapor > Takım tablosu aralığını belirtin.
  • Kaydet'e tıklayın > Düğmeniz XLTools sekmesinde görünecektir.

Artık tek bir tıklamayla kolayca üç aylık bir rapor oluşturabilirsiniz.

Sorularınız veya önerileriniz mi var? Aşağıda bir yorum bırakın.