Cara Membuat dan Menjalankan Makro di LibreOffice Calc di Linux

LibreOffice adalah jawaban dunia FOSS untuk Microsoft Office Suite mainstream dan eksklusif. Dikembangkan oleh pengembang dan kontributor perangkat lunak Produktivitas Office terkemuka, ia menawarkan pengganti lengkap untuk Microsoft Office pada beberapa Sistem Operasi.

Aplikasi LibreOffice yang setara dengan Microsoft Excel disebut LibreOffice Calc. Muncul dengan sejumlah fitur dan antarmuka yang mirip dengan Excel. Ini memiliki mesin Makro bawaan untuk mengembangkan dan menjalankan Makro untuk otomatisasi. Namun, itu tidak mendukung Visual Basic, tetapi mendukung bahasanya sendiri; LibreOffice Basic, untuk pemrograman makro.

Paket LibreOffice sudah diinstal sebelumnya di sebagian besar distribusi Linux, termasuk Ubuntu, Debian, Fedora, dan CentOS.

Membuat Dan Menjalankan Makro di LibreOffice Calc

Pertama, mari buat lembar kerja dengan beberapa contoh data.

Untuk membuka pengatur Makro, buka Alat » Makro » Atur Makro » Dasar-dasar LibreOffice. Ini akan membuka Makro Dasar LibreOffice jendela seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Masukkan nama baru untuk Makro, lalu klik tombol Baru di sisi kanan bawah jendela.

Anda sekarang akan melihat layar editor Makro di LibreOffice Basic.

Seperti yang kita lihat, Makro yang dibuat secara manual secara default dibuat di bawah "Makro & Dialog Saya -> Standar -> Modul1".

Saat ini ada dua makro yang hadir: Salah satunya adalah Utama, yang merupakan makro kosong default, dan lainnya adalah tes, makro yang kita buat di atas. Kami sekarang akan meningkatkan makro uji.

Makro kami akan melakukan tugas-tugas berikut:

  • Periksa yang semua orang memiliki profesi penulis
  • Buat lembar baru
  • Pindahkan semua entri untuk penulis di lembar baru

Berikut ini adalah Makro kami:

Sub tes rem Pindahkan entri dengan profesi Writer ke lembar baru redup crs(8) sebagai objek redup j sebagai Integer redup prof sebagai objek redup i sebagai Integer redup sh sebagai objek redup sh2 sebagai objek sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 untuk i = 1 sampai 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Simpan baris lengkap dalam variabel If prof.string = "Writer" Kemudian crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Sekarang buat lembar baru dan tulis data ini di sana ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Lakukan Sementara tidak IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop End Sub

Biarkan saya menjelaskan makro di atas kepada Anda bagian demi bagian.

Subtes. . . Akhir Sub

tes adalah nama makro kami, maka dalam kode, itu dilambangkan sebagai Subtes (sub = subrutin). Demikian pula kami mengakhiri kode makro ini dengan pernyataan Akhir Sub. Perhatikan bahwa pernyataan ini ditambahkan secara otomatis saat kita membuat makro dari menu, meskipun pengguna dapat langsung menulis kode makro di sini dan nama Subrutin akan dianggap sebagai nama makro.

rem 

Semua komentar di LibreOffice Basic dimulai dengan kata kunci rem. Baris lengkap yang dimulai dengan rem dianggap sebagai komentar. Cara lain adalah dengan menggunakan ' (koma terbalik tunggal) di awal baris.

redup crs(8) sebagai objek redup j sebagai Integer redup prof sebagai objek redup i sebagai Integer redup sebagai objek redup sh2 sebagai objek

Ini adalah deklarasi variabel di LibreOffice Basic. Sintaks umumnya adalah redup . Untuk mendeklarasikan array, gunakan sintaks yang mirip dengan variabel crs, di mana 8 adalah panjang array.

sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1

Komponen ini mengacu pada dokumen saat ini. Dalam hal ini adalah Lembar Kerja Calc. Kami memuat Sheet dengan indeks 0, yaitu, lembar pertama, dalam variabel sh. Ada juga fungsi untuk memuat Lembar menggunakan nama.

Selanjutnya kita panggil fungsi getCellRangeByPosition dari objek sh dan memuatnya ke dalam array crs. Rentang Sel mengacu pada sekelompok sel dalam lembar berdasarkan posisi.

Perhatikan bahwa argumen, 0, 0 (kolom 0, baris 0) menunjukkan sel awal rentang, dan 3, 0 (kolom 3, baris 0) menunjukkan sel akhir dari rentang. Jadi 0, 0, 3, 0 mengacu pada baris pertama (judul) dari lembar sampel kami.

for i = 1 to 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Simpan baris lengkap dalam variabel If prof.string = "Writer" Then crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 End If next i

Kami menggunakan untuk pernyataan untuk mengulang melalui baris. Itu untuk blok berakhir dengan Selanjutnya pernyataan, yang menambah variabel i pada akhir setiap iterasi.

Selanjutnya kita panggil fungsi GetCellByPosition dari objek sh. Kami melewati parameter (3, saya), yaitu, dengan setiap iterasi, objek sel pada kolom 3 dan baris i diambil dalam variabel prof.

Kemudian kita menggunakan Jika pernyataan untuk memeriksa apakah nilai dalam sel prof adalah "Penulis". Jika ya, kita panggil lagi fungsinya getCellRangeByPosition, kali ini, dengan Saya menggantikan nomor baris awal dan akhir. Sekali lagi kami menyimpannya dalam array cr.

ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1)

Pertama kita buat sheet baru dengan nama Penulis, pada posisi 1, yang merupakan posisi ke-2, karena indeks dimulai dari 0. Kemudian kita mendapatkan objek dari sheet yang baru dibuat ini, sehingga kita dapat memasukkan data penulis di sheet ini.

i = 0 Lakukan Sementara tidak IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Loop

Itu Lakukan Sementara pernyataan loop digunakan ketika kita ingin mengulang berdasarkan kondisi, sebagai lawan dari pengulangan dalam rentang nilai integer, yang menggunakan use untuk seperti yang ditunjukkan sebelumnya. Di sini, kita mengulang sampai cr(i) tidak nol.

Selanjutnya kita panggil lagi getCellRangeByPosition dengan cara yang sama seperti sebelumnya untuk mendapatkan objek jangkauan di lembar baru.

Akhirnya, kami memanggil dua fungsi: getDataArray yang mengembalikan data dari cr(i), yaitu, satu baris data (tentang seorang penulis) dari lembar pertama; dan kami menulis data ini ke rentang sel di lembar baru menggunakan setDataArray.

Terakhir, simpan makro dari File » Simpan semua pilihan.

Untuk menjalankan makro, buka Alat » Makro » Jalankan Makro dan pilih Makro Anda dari direktori "Makro Saya" di Perpustakaan Pemilih Makro. Klik Lari tombol setelah memilih Nama Makro.

Menjalankan makro di atas pada contoh spreadsheet kami, menghasilkan hasil berikut.

Ini adalah cara membuat makro di LibreOffice. Untuk informasi dan opsi lebih lanjut, lihat dokumentasi resmi.

? Bersulang!