Linux'ta LibreOffice Calc'de Makro Nasıl Oluşturulur ve Çalıştırılır

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. getCellRangeByPositionile, 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!