LibreOffice, ofis uygulamanızda çeşitli tekrarlayan görevleri otomatikleştirmek için kendi makronuzu yazmanın bir yolunu sunar. Makro geliştirmeniz için Python veya basic kullanabilirsiniz.
Amaç
LibreOffice Calc ilk hücresine, yani 1. satır ve sütun A’nın hücresine ‘Merhaba Dünya’ dizesini koyacak bir makro oluşturacağız.
Makroyu Oluşturmak
- Uygulamalar => Office => LibreOffice Calc’den LibreOffice Calc’ı açın.
Menüden seçeneğe gidin: Araçlar ==> Makrolar ==> Makroları Düzenle ==> LibreOffice Basic. Aşağıda ‘LibreOffice temel makroları’ penceresi açılacaktır.
Makro adı kutusuna istediğiniz adı verin ve Yeni’ye tıklayın. İstediğiniz ismi kullanabilirsiniz. Bu yazı için merhaba_world kullanıldı.
Yeni düğmesine tıkladığınızda, makro düzenleyici açılacaktır. İşte bu pencerede dikkat edilmesi gereken bazı noktalar. Bu, kodunuzu yazmanız, kodunuzu hata ayıklamanız vb. gereken yerdir. Makronun adının temel makronuzun işlev adı olduğunu görebilirsiniz.
Şimdi, ilk makroyu kodlamanın zamanı geldi. Type nesnelerinin iki değişkenini tanımlayalım.
dim document as object dim dispatcher as object
Yukarıdaki değişkenlere iki değer atayalım.
document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Bu Bileşen, geçerli belgeye atıfta bulunur. LibreOffice’te yaptığınız her şey, örneğin yazı, renk, ekleme, bir kontrolör tarafından “izlenir”. Denetleyici daha sonra değişiklikleri belge çerçevesine, yani Calc’ın ana pencere alanına gönderir. Dolayısıyla belge değişkeni, Calc’ın ana alanını ifade eder.
createUnoService, DispatchHelper hizmetinin bir örneğini oluşturur. Bu hizmet, görevleri makrodan çerçeveye göndermemize yardımcı olacaktır. Hemen hemen tüm LibreOffice makro görevleri, dağıtım programı kullanılarak yürütülebilir.
Şimdi bir dizi özellik bildireceğiz. Özellikler her zaman bir ad/değer çiftindedir. Böylece ad, özellik adını içerir ve değer, o özelliğin değerini içerir.
dim args1(0) as new com.sun.star.beans.PropertyValue dim args2(0) as new com.sun.star.beans.PropertyValue
Amacımız ilk Hücreye ‘Merhaba Dünya’ koymak. İlk A1 hücresini işaret etmek ve bir metin koymak için iki özellik kullanırdık – ‘ToPoint’ ve ‘StringName’.
args1(0).Name = "ToPoint" args1(0).Value = "$A$1" args2(0).Name = "StringName" args2(0).Value = "Hello World!"
Özellikleri ayarladıktan sonra, bunları belgeye göndermek için sevkıyatı aramanın zamanı geldi. Bu nedenle, iki komut kullanarak göndericinin executeDispatch olayını çağırın – a) “.uno:GoToCell” b) “.uno:EnterString”. Bu komutlar, çerçeveye neyin yürütülmesi gerektiğini söyler ve ayrıca tüm özellik dizisini değerlerle birlikte iletir.
Şimdi yürütme tamamlandığında bildirmek için bir mesaj kutusu koyun.
Makroyu Çalıştır
- Makroyu çalıştırmanın zamanı geldi. Makroyu çalıştırmak için F5’e basın veya araç çubuğundan Makro Çalıştır’ı tıklayın (yukarıya bakın).
- Yürütmeden sonra, mesaj kutusu açılır. Geri dönüp Calc elektronik tablosunu kontrol ederseniz, ‘Merhaba Dünya!’ İlk Hücrede yazılır.
Kodun Tam Hali
REM ***** BASIC ***** sub hello_world dim document as object dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dim args1(0) as new com.sun.star.beans.PropertyValue dim args2(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) args2(0).Name = "StringName" args2(0).Value = "Hello World!" dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2()) msgbox "Completed!" end sub
Yazının orijinalini buradan okuyabilirsiniz.