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



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.)


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.





Ş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!;)

corel için visual basic kasmak isteyenlere muhtesem kaynak
YanıtlaSilkü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ıtlaSilhttp://img40.imageshack.us/img40/2671/94008617.jpg
YanıtlaSil[img]http://img40.imageshack.us/img40/2671/94008617.jpg[/img]
dökümanı acarken resimdeki hatayı alıyorum, nedeni ne olabilir ?
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ıtlaSilpeki ben yaptıgım bu macro yu baska dokumanda kullanmak istersem ne yapmam gerek ?
YanıtlaSilBu derste zaten dökümandan bağımsız makro yapımı anlatılmış.
YanıtlaSildokumanı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ıtlaSilDers 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ıtlaSilworde corelden attığımız şekiller niye bozuk çıkıyor.
YanıtlaSilWord'de Copy yapıpı, CorelDRAW da paste spevial ile picture metafile seçerseniz sorun yaşamazsınız.
SilMerhaba, 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ıtlaSilMakro ölçü birimini inch alıyor bunu mm verme şansım varmı?
SilArkadaşlar buldum bu şekilde imiş : ) ActiveDocument.Unit = cdrMillimeter
Sil