LibreOffice, FOSS dünyasının ana akım ve tescilli Microsoft Office Suite'e yanıtıdır. Önde gelen Office Üretkenlik yazılımı geliştiricileri ve katkıda bulunanlar tarafından geliştirilmiş olup, birden çok İşletim Sisteminde Microsoft Office'in tam yerini alır.
Microsoft Excel'in LibreOffice uygulaması eşdeğerine LibreOffice Calc denir. Bir dizi özellik ve Excel'e benzer bir arayüz ile birlikte gelir. Otomasyon için Makrolar geliştirmek ve çalıştırmak için yerleşik bir Makro motoruna sahiptir. Ancak, Visual Basic'i desteklemez, ancak kendi dilini destekler; Makroları programlamak için LibreOffice Basic.
LibreOffice paketi, Ubuntu, Debian, Fedora ve CentOS dahil olmak üzere çoğu Linux dağıtımında önceden yüklenmiş olarak gelir.
LibreOffice Calc'de Makro Oluşturma ve Çalıştırma
İlk olarak, bazı örnek verilerle bir çalışma sayfası oluşturalım.
Makro düzenleyiciyi açmak için şuraya gidin: Araçlar » Makrolar » Makroları Düzenle » LibreOffice Temelleri. o açacak LibreOffice Temel Makroları Aşağıdaki ekran görüntüsünde gösterildiği gibi pencere.
Makro için yeni bir ad girin, ardından pencerenin sağ alt tarafındaki Yeni düğmesine tıklayın.
Şimdi LibreOffice Basic'te Makro düzenleyici ekranını görmelisiniz.
Gördüğümüz gibi, manuel olarak oluşturulan Makrolar varsayılan olarak “Makrolarım ve Diyaloglarım -> Standart -> Modül1” altında oluşturulur.
Şu anda mevcut iki makro vardır: Biri Ana
, varsayılan boş bir makrodur ve diğeri Ölçek
, yukarıda oluşturduğumuz makro. Şimdi test makrosunu geliştireceğiz.
Makromuz aşağıdaki görevleri yapacaktır:
- Tüm insanların meslek yazarı olduğunu kontrol edin
- Yeni bir sayfa oluştur
- Yazarlar için tüm girişleri yeni sayfaya taşı
Makromuz aşağıdadır:
Alt test rem Meslek ile girişleri taşı Writer'ı yeni sayfaya dim crs(8) olarak nesne dim olarak j Tamsayı dim prof olarak nesne dim i olarak Tamsayı dim sh nesne olarak dim sh2 nesne sh olarak = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 for i = 1 ila 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Satırın tamamını değişkende saklayın If prof.string = "Writer" O zaman crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i Şimdi yeni bir sayfa oluşturun ve bu verileri oraya yazın ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 IsNull(crs(i)) Değilken Yap sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Döngü Sonu Alt
Yukarıdaki makroyu size bölüm bölüm anlatayım.
Alt testi. . . Alt Alt
Ölçek
makromuzun adıdır, dolayısıyla kodda şu şekilde gösterilir: alt test
(alt = alt program). Benzer şekilde bu makro kodunu deyimle sonlandırıyoruz Alt Alt
. Menüden bir makro oluşturduğumuzda bu ifadelerin otomatik olarak eklendiğini unutmayın, ancak kullanıcı doğrudan makro kodunu buraya yazabilir ve Altyordam adı makro adı olarak kabul edilecektir.
geri
LibreOffice Basic'teki tüm yorumlar anahtar kelime ile başlar geri
. Rem ile başlayan tam bir satır yorum olarak kabul edilir. Başka bir yol kullanmaktır '
(tek ters virgül) satırın başında.
dim crs(8) nesne olarak dim j olarak Tamsayı dim prof nesne olarak dim i olarak Tamsayı dim sh nesne olarak dim sh2 nesne olarak
Bu, LibreOffice Basic'teki değişken bildirimidir. Genel sözdizimi olarak karartmak
. Bir diziyi bildirmek için, 8 dizinin uzunluğu olmak üzere crs değişkenine benzer bir sözdizimi kullanın.
sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1
Bu Bileşen
mevcut belgeye atıfta bulunur. Bu durumda bu bir Kireç Çalışma Sayfasıdır. Sayfayı 0 indeksli, yani ilk sayfayı sh değişkeninde yüklüyoruz. Adı kullanarak bir Sayfa yüklemek için işlevler de vardır.
Sonra fonksiyonu çağırırız getCellRangeByPosition
nesne sh ve onu crs dizisine yükleyin. Hücre Aralığı, sayfadaki konuma göre bir hücre grubunu ifade eder.
Argümanların, 0, 0
(sütun 0, satır 0) aralığın başlangıç hücresini gösterir ve 3, 0
(sütun 3, satır 0), aralığın bitiş hücresini gösterir. Böylece 0, 0, 3, 0
örnek sayfamızın ilk (başlık) satırını ifade eder.
for i = 1 ila 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Satırın tamamını değişkende saklayın If prof.string = "Writer" O zaman crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 End If next i
biz bir için
satırlar arasında dolaşmak için ifade. bu için
blok bir ile biter sonraki
her yinelemenin sonunda i değişkenini artıran ifade.
Sonra bir fonksiyon çağırıyoruz GetCellByPosition
nesne sh. Parametreleri geçiyoruz (3, ben)
, yani her yinelemede, 3. sütun ve i satırındaki hücrenin nesnesi prof değişkeninde alınır.
Sonra bir kullanırız Eğer
prof hücresindeki değerin “Writer” olup olmadığını kontrol etmek için ifade. Eğer öyleyse, fonksiyonu tekrar çağırırız. getCellRangeByPosition
ile, bu sefer Bence
başlangıç ve bitiş satır numarası yerine. Yine dizide saklıyoruz crs
.
ThisComponent.Sheets.insertNewByName("Yazarlar", 1) sh2 = ThisComponent.Sheets(1)
İlk önce adında yeni bir sayfa oluşturuyoruz yazarlar
, pozisyonda 1
, dizin 0'dan başladığı için 2. konumdur. Daha sonra bu yeni oluşturulan sayfanın bir nesnesini alırız, böylece yazarların verilerini bu sayfaya girebiliriz.
i = 0 IsNull(crs(i)) Değilken Yap sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Döngü
bu Yaparken
döngü ifadesi, kullanım için bir dizi tamsayı değerinde döngü yapmak yerine, koşullara dayalı olarak döngü yapmak istediğimizde kullanılır. için
daha önce gösterildiği gibi. Buraya kadar döngü yapıyoruz crs(i)
boş değil.
Sonra tekrar ararız getCellRangeByPosition
yeni sayfada bir aralık nesnesi almak için öncekine benzer şekilde.
Son olarak, iki işlevi çağırıyoruz: getDataArray
hangi verileri döndürür crs(i)
, yani ilk sayfadan bir satır veri (bir yazar hakkında); ve bu verileri kullanarak yeni sayfadaki hücre aralığına yazıyoruz. setDataArray
.
Son olarak, makroyu şuradan kaydedin: Dosya » Tümünü kaydet seçenek.
Makroyu çalıştırmak için şuraya gidin: Araçlar » Makrolar » Makro Çalıştır ve Makro Seçici Kitaplığındaki “Makrolarım” dizininden Makronuzu seçin. Tıkla Çalıştırmak Bir Makro Adı seçtikten sonra düğmesine basın.
Yukarıdaki makroyu örnek elektronik tablomuzda çalıştırmak aşağıdaki sonucu verir.
LibreOffice'de makro oluşturmanın yolu budur. Daha fazla bilgi ve seçenek için resmi belgelere bakın.
? Şerefe!