LibreOffice

Makro Kullanarak Calc Range’den Tüm İçerik Türlerini Silme


Bu eğitimde, makro kullanılarak LibreOffice Calc’teki hücrelerden veya aralıklardan içeriklerin nasıl silineceği açıklanmaktadır.

Makro kullanarak, bir hücrede veya bir hücre aralığında bulunan her şeyi temizleyebilirsiniz. Bu eğitimde, bir aralıktaki her tür içeriği temizleyeceğiz. Aralıklardaki içerikleri temizlemeden önce makronun, hücre içeriğinin türünü belirlemesi gerekir. Çünkü hücrelerdeki her şeyi silmek istiyorsanız değeri, biçimlendirme stillerini vb. dikkate almanız gerekir.

Bazı örnekler kullanarak buna bir göz atalım.

Not: Bu eğitimde bir makronun nasıl oluşturulacağını ve çalıştırılacağını bildiğiniz varsayılmaktadır. Yeniyseniz, önce bu eğiticiye göz atabilir ve bu sayfaya dönebilirsinizhttps://www.debugpoint.com/writing-a-macro-in-libreoffice-calc-getting-started/.

Makro kullanarak LibreOffice’deki hücre ve aralık içeriğini silme

Aralığın içeriğini temizleyecek bir prosedür tanımlayalım.

Sub ClearRangeContents()

End Sub

Sayfa1’deki aralığı ele alalım. getCellRangeByName işlevi, bağımsız değişken aracılığıyla iletilen aralığa karşılık gelen bir aralık nesnesini döndürür.

Dim oDoc As Object

Dim oSheet As Object

Dim oCell As Object

Dim oRange As Object

oDoc = ThisComponent

oSheet = oDoc.Sheets(0) ‘ Refers to Sheet1 as in 0, 1, 2 etc

oRange = oSheet.getCellRangeByName(“A3:B10”)

Range A3:B10 with different types of values
Farklı değer türleriyle A3:B10 aralığı

Aralığın içeriğini temizlemek için clearContents(flags) aralık işlevi kullanılabilir. Bayraklar, bir hücrede bulunabilecek değer türlerinden başka bir şey değildir. Dize, sayısal değerler, formüller, stiller vb. olabilir. Bu aralıktan hangi türleri temizlemek istediğinizi belirtebilirsiniz. clearContents argüman bayrakları uzun veri türündedir ve girdi olarak birden fazla bayrak alabilir.

Parametreler, com.sun.star.sheet’in bir parçası olan OpenOffice/LibreOffice sabit grubu CellFlags’da listelenir.

com.sun.star.sheet.CellFlags altındaki parametrelerin Listesi

parametre adıTanımflag numeric value
VALUEtarih veya saat olarak biçimlendirilmeyen sabit sayısal değerleri seçer.1
DATETIMEtarih veya saat sayı biçimine sahip sabit sayısal değerleri seçer.2
STRINGsabit dizeleri seçer.4
ANNOTATIONhücre açıklamalarını seçer.8
FORMULAformülleri seçer.16
HARDATTRtüm açık biçimlendirmeyi seçer ancak stil sayfaları aracılığıyla örtülü olarak uygulanan biçimlendirmeyi seçmez.32
STYLEShücre stillerini seçer.64
OBJECTSÇizim nesnelerini seçer.128
EDITATTRhücre içeriğinin bazı bölümleri içindeki biçimlendirmeyi seçer.256
FORMATTEDHücre içindeki biçimlendirmeye sahip hücreleri veya hücre içinde birden fazla paragraf bulunan hücreleri seçer.512

Tüm bu sabitleri bir değişkenin altına koyun ve bunu clearContents işlevine aktarın. Böylece etkili bir şekilde her şey temizlenir. Ayrıca hücrelerden veya aralıklardan belirli bir şeyin silinmesini istiyorsanız yukarıdaki değerleri kullanarak bayraklarınızı özelleştirebilirsiniz.

Dim oFlags As Long

oFlags = com.sun.star.sheet.CellFlags.VALUE + _ com.sun.star.sheet.CellFlags.DATETIME + _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.ANNOTATION + _ com.sun.star.sheet.CellFlags.FORMULA + _ com.sun.star.sheet.CellFlags.HARDATTR + _ com.sun.star.sheet.CellFlags.STYLES + _ com.sun.star.sheet.CellFlags.OBJECTS + _ com.sun.star.sheet.CellFlags.EDITATTR

oRange.clearContents(oFlags)

Makroyu çalıştırma

Bir aralıktaki çeşitli değerleri içeren bir Calc elektronik tablosundaki kod bloğunun tamamının altına yerleştirin ve işlevi çağırarak makroyu çalıştırın. Çıktının tüm değerlerden, biçimlendirmeden vb. temizlendiğini görebilirsiniz.

Makronun Tamamı

Sub ClearRangeContents() 
Dim oDoc As Object 
Dim oSheet As Object 
Dim oCell As Object 
Dim oRange As Object 
Dim oFlags As Long 
oDoc = ThisComponent oSheet = oDoc.Sheets(0) ' Refers to Sheet1 as in 0, 1, 2 etc oRange = oSheet.getCellRangeByName("A3:B10") oFlags = com.sun.star.sheet.CellFlags.VALUE + _ com.sun.star.sheet.CellFlags.DATETIME + _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.ANNOTATION + _ com.sun.star.sheet.CellFlags.FORMULA + _ com.sun.star.sheet.CellFlags.HARDATTR + _ com.sun.star.sheet.CellFlags.STYLES + _ com.sun.star.sheet.CellFlags.OBJECTS + _ com.sun.star.sheet.CellFlags.EDITATTR oRange.clearContents(oFlags) End Sub

Yazının orijinalini buradan okuyabilirsiniz.