LibreOffice

LibreOffice Calc’de Makro Yazma – Başlangıç

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.