17 Haziran 2009 Çarşamba

Corel DRAW Macro Dersleri 1 - VBA'ya Giriş

CorelDRAW'da makro geliştiren Türk kullanıcılarından daha önce bahsetmiş, bu arkadaşların makrolarını da sizlerle paylaşmıştım. CorelDRAW için hem makro yazan hem de eğitim veren Tunç Olcay bundan sonra CorelTÜRK Blog'a dersleriyle destek verecek. Corel Makrolarının çok ilgi görmesi üzerine derslerin içeriği ağırlıklı olarak Corel DRAW Makroları olacak. Tunç'a teşekkür ederek ilk derse başlayalım. Biraz uzun bir yazı olacak, sıkı durun :)

Corel DRAW Makro Dersleri 1 - VBA'ya Giriş

CorelDraw'da Otomasyon (VBA) (Toplu İş Yaptırımları)

Genelde CorelDraw sadece; logo çizimi, fatura yapımı, orta seviyeli afiş tasarımları, import edilmiş fotoğrafları düzenleme gibi işlemlerin yapıldığı, vektörel çizim ağırlıklı ortalama bir program olarak tanımlanır. (Özellikle yazılım geliştirme ortamına uzak Mac [Illustrator, Freehand] kullanıcıları için).

Oysa ülkemizde kullanımı pek yaygın olmasa da CorelDraw, içinde gerçek bir "canavar"ı da barındırıyor. Bu canavarın adı VBA., yani Visual Basic Application. Eğer az da olsa Visual Basic kodlarıyla ilginiz varsa, siz de CorelDraw ile çoklu iş yaptırımlarını kolaylıkla hayata geçirebilirsiniz. Hatta hiç program bilginiz olmasa bile, zaman içinde buradaki dersleri takip ederek sizler de CorelDraw altında VBA ile işinizi görebilecek kadar (toplu versiyon değiştirmeler, döküman içindeki yazıları convert etmek, RGB fotoğrafları tek tek bulup CMYK'ya çevirmek vb. işler için) bu "canavar"ı kullanabilirsiniz.

Kendimden örnek vermem gerekirse, yaklaşık 5 yıl önce çalıştığım andaç yapan bir firmada CorelDraw VBA (v10 ve 12) sayesinde tam 44 adet andaç bitirdim (5800 öğrenci). Üstelik bunların montajlarını da CorelDraw VBA altında yazdığım montaj programı ile bitirdim. Zaman buldukça burada vereceğim CorelDraw VBA dersleriyle bu önemli açığı kapatacağımızı sanıyorum. Örnek kodlar ve GMS modülleri de zaman zaman verilecektir.

NEDEN CorelDraw'da otomasyon kullanırız? NİÇİN VBA?:

Rutin olarak yaptığımız işlerde çoğumuzun zaman kaybı olmuştur. Corel altında 500 sayfalık bir kitap yazdığınızı düşünün, bu sayfaların numaralandırılması gerektiğinde geçecek zamanı hesaplayın ya da bir dergi çalışması yapıyorsunuz, montajı yaptınız, yazıları convert etmeyi unuttunuz yada yada montajdaki fotoğraflar arasında rgb olanlar var cmyk'ya çevirmek istiyorsunuz. Normalde bunları tek tek seçerek, aratarak (Find) ile yapmanız da olasıdır. Ama yazacağınız birkaç satır kod ile tüm bu işleri birkaç sn içerisinde şipşak bitirebilirsiniz. Başka bir örnek vermek gerekirse, elinizde herhangi bir yere göndermek zorunda olduğunuz Corel dökümanlar var, sizinkisi versiyon X4'de kaydedilmiş ama karşı tarafın Corel versiyonu X3, adamcağız ölse açamaz, eh sizin de bu dökümanları tek tek açıp X3'e göre kaydetmeniz gerekiyor diyelim. bu iş için FileConverter modülünü kullanabileceğiniz gibi (o da Corel VBA) yine birkaç satır kod ile bu işin üstesinden gelebilirsiniz. Bu biraz da hani pshop kullananlar bilirler, actions'a benzer (yapılan her hareketi kaydeder, özelleştirmek sorun olabilir). Ama CorelDraw VBA'da kod bilgimizi geliştirerek yapılacak işleri tamamen özelleştirmek olasıdır.

YENİ BİR GMS MODÜL YARATMAK:

Öncelikle gms modüllerinin ne olduğundan bahsetmek istiyorum. CorelDraw VBA'da kod kümelerinin barınacağı temel dosyaların uzantısı .gms şeklinde olur. Bu satırları örneklerle açıklayalım ve ilk gms modülümüzü yaratalım. Öncelikle (özellikle xp kullanıcıları için ApplicationData klasörü altında) gms uzantılı modülümüzü yaratacağımız yer çok önemlidir. örnek bir yol yazmak gerekirse, gideceğiniz klasör yolu şu şekilde olmalıdır. (makinem xp servicepack2, CorelDraw sürümüm ise X4);


C:\Documents and Settings\olympia\Application Data\Corel\CorelDRAW Graphics Suite X4\User Draw\GMS
Eveeet, yeni gms modülümüz artık hazır durumda. şimdi Corel programınız açıksa kapatıp yeniden açın ve kontrol etmek için VBA'ya gidin. (Kısayolu: Alt+F11)
GMS MODÜLÜMÜZÜN ADINI DEĞİŞTİRMEK:
Editor açıldığında sol tarafta gms modülünüzün adı "GlobalMacros (ilk.gms)" şeklinde görülecektir. (Bknz altta, sağdaki fotoğraf yandaki artıya [GlobalMacros(ilk.gms) solundaki] basıldıktan sonrasının görüntüsüdür.)Gelin şimdi diğer hazırda varolan "GlobalMacros" modülü ile karışmasını önlemek için modülümüzün adını da değiştirelim.Sol alttaki (Name) kutucuğunun yanındaki "GlobalMacros" yerine "ilk" diye modülümüze tekrar ad verdik. Görüntü şu hale geldi. (Bknz altta)GMS MODÜLÜMÜZ İÇİNE KOD YERLEŞTİRMEK:

Bu olay 2 türlü yapılabilir;
1- CorelDraw'da Record'u aktif edip yaptığımız hareketleri kod olarak kayıt haline getirmek.
2- Visual Basic bilgimiz + Corel Objectlerini tanımamız dahilinde kodları yazmak.

Öncelikle en basitinden başlayarak kodları bırakalım CorelDraw kendisi yazsın. Bunu yapmak için, Tools menüsü altındaki Macros'a gitmek ve şekilde göreceğiniz üzere "Start Recording" komutuna tıklamaktır.
Daha sonra alttaki fotoğrafda göreceğiniz üzere küçük bir pencere belirecektir. Bu pencere bize kaydın hangi gms modül içine yapılacağını soruyor. Çıkan pencerede "ilk" ikonunun üstüne iki kere tıkladığımızda kayıt artık ilk.gms modülünün içine yazılmış olacaktır. (Önemli Not: CorelX4 öncesindeki sürümlerde ikon penceresi yerine combobox/açılır kutu) geliyor. Ona tıklayıp gms modülünüzü seçmelisiniz)
Bu komut verildikten sonra şimdiiiiii dikkat. Corel VBA yapacağımız hareketleri kaydetmeye başlayacak. Ben örnek olarak bir dikdörtgen oluşturdum. İçini Kodak sarısı, dış çerçevesini de kırmızı (*güzel renkler : ))) 2,5mm yaptım, daha sonra hafifçe sola döndürdüm (12,4 derece), yaklaşık 2 boy aşağıya taşıdım. Corel VBA hepsini kaydetti. Kodları aşağıya yazıyorum. Açıklamalarını da karşılarına vereceğim. Burada önemli bir not vermek istiyorum. Tüm hareketleri kaydediyor derken bir obje var ki (text/yazı) nedeni bilinmez bir şekilde Macro kaydına girmiyor. Yeşil yazılmış kodlar bunun olası olmadığını belirtiyor. (Bknz: Alttaki Fotoğraf)
Yazı (Artistic Text yada Paragraph Text) yaratmak için kodlardan yararlanacağız. Evet dönelim tekrar işimize. Nesne yaratma işlemleri bittikten sonra artık kaydı kapatıyoruz.
Tüm bu işlemler bittikten sonra VBA Editor'e döndüğümüzde şöyle bir görüntü ile karşılaşıyoruz. (Bknz: Alttaki Fotoğraf)
Yukarıda göreceğiniz üzere renkli oklar ile kaydedilmiş bazı kodların açıklamalarını yaptım. İlerideki derslerde bazı örnek gms dosyalarını da örnek olarak vereceğim. Bunları çalışmalarınızda rahatça kullanıp üzerinde rahatça değişiklikler yaparak kod yazma yetinizi geliştirebilirsiniz.

Şimdi Gelelim 2. Yönteme;

Bu bölüm Visual Basic kodlarından anlayanlar için iyi bir örnek oluşturabilir. Modülleri yazmayı bildiğinizi hesaba katarak bir Artistic Text yaratma kodu oluşturuyorum.


Sub gozgoz()
Dim s1 As Shape
Set s1 = ActiveLayer.CreateArtisticText(50, 50, "Göz Göz GÖZTEPE!!!", cdrTurkish, cdrCharSetTurkish, ArialTur, 120, cdrTrue, cdrTrue, cdrNoFontLine, cdrCenterAlignment)
s1.Fill.ApplyNoFill
s1.Outline.SetProperties 0.007874, OutlineStyles(0), CreateCMYKColor(0, 0, 0, 100), ArrowHeads(0), ArrowHeads(0), cdrFalse, cdrFalse, cdrOutlineButtLineCaps, cdrOutlineMiterLineJoin, 0#, 100, MiterLimit:=5#
s1.Fill.UniformColor.CMYKAssign 0, 0, 100, 0
s1.Outline.SetProperties Color:=CreateCMYKColor(0, 100, 100, 0)
s1.Outline.SetProperties 0.059055
End Sub

Görüntü şu şekilde oluşacaktır. (kodu pencereye yazdıktan sonra F5 tuşu ile çalıştırmayı unutmayın!;)

13 yorum:

  1. corel için visual basic kasmak isteyenlere muhtesem kaynak

    YanıtlaSil
  2. kürşad yine üşenmeden yazmıssın makaleni, fakat ben yine olusturdugum macro yu macroinstaller ile kısayol atayamadım, bunun bi çözümü var mı?

    YanıtlaSil
  3. http://img40.imageshack.us/img40/2671/94008617.jpg

    [img]http://img40.imageshack.us/img40/2671/94008617.jpg[/img]

    dökümanı acarken resimdeki hatayı alıyorum, nedeni ne olabilir ?

    YanıtlaSil
  4. Açtığınız döküman bir makro içeriyor. Bu hata mesajı değil bir uyarı mesajı. Açtığınız dökümandaki makroyu aktif edip etmemek istediğinizi soruyor.

    YanıtlaSil
  5. peki ben yaptıgım bu macro yu baska dokumanda kullanmak istersem ne yapmam gerek ?

    YanıtlaSil
  6. Bu derste zaten dökümandan bağımsız makro yapımı anlatılmış.

    YanıtlaSil
  7. dokumanın tamamını okumadıgım belli oldu sanırım :) , bugun yaptıgım işte kullanabilecegim bişeydi acilen yarısını okuyup uygulamaya calıstım ondan oldu sanırım :P

    YanıtlaSil
  8. Ders uzun olunca malesef tamamını okumama gibi bir sorun oluşaibliyor. Artık her şey o kadar hızlı gelişiyor ki biz de bu telaiın içine karışıp gidiyoruz galiba.

    YanıtlaSil
  9. worde corelden attığımız şekiller niye bozuk çıkıyor.

    YanıtlaSil
    Yanıtlar
    1. Word'de Copy yapıpı, CorelDRAW da paste spevial ile picture metafile seçerseniz sorun yaşamazsınız.

      Sil
  10. Merhaba, CreateArtisticText işleminde x y koordinatlarını tasarım ekranındaki gibi örn 100mm verdiğimde çok alakasız bir yerde çıkıyor ama makroda x e 4 verirsem 101,255mm olarak yerleşiyor bunun sebebi nedir?

    YanıtlaSil
    Yanıtlar
    1. Makro ölçü birimini inch alıyor bunu mm verme şansım varmı?

      Sil
    2. Arkadaşlar buldum bu şekilde imiş : ) ActiveDocument.Unit = cdrMillimeter

      Sil