Cara Mencipta dan Menjalankan Makro dalam LibreOffice Calc di Linux

LibreOffice ialah jawapan dunia FOSS kepada Suite Microsoft Office arus perdana dan proprietari. Dibangunkan oleh pembangun dan penyumbang perisian Produktiviti Office terkemuka, ia menawarkan penggantian lengkap untuk Microsoft Office pada berbilang Sistem Operasi.

Aplikasi LibreOffice yang setara dengan Microsoft Excel dipanggil LibreOffice Calc. Ia datang dengan beberapa ciri dan antara muka yang serupa dengan Excel. Ia mempunyai enjin Makro terbina dalam untuk membangunkan dan menjalankan Makro untuk automasi. Walau bagaimanapun, ia tidak menyokong Visual Basic, tetapi menyokong bahasanya sendiri; LibreOffice Basic, untuk makro pengaturcaraan.

Suite LibreOffice telah diprapasang dalam kebanyakan pengedaran Linux, termasuk Ubuntu, Debian, Fedora dan CentOS.

Mencipta Dan Menjalankan Makro dalam LibreOffice Calc

Mula-mula, mari buat lembaran kerja dengan beberapa data sampel.

Untuk membuka penganjur Makro, pergi ke Alat » Makro » Susun Makro » Asas LibreOffice. Ia akan membuka Macro Asas LibreOffice tetingkap seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Masukkan nama baharu untuk Makro, kemudian klik butang Baharu di sebelah kanan bawah tetingkap.

Anda kini harus melihat skrin editor Makro dalam LibreOffice Basic.

Seperti yang kita dapat lihat, Makro yang dibuat secara manual dibuat secara lalai di bawah "Makro & Dialog Saya -> Standard -> Modul1".

Pada masa ini terdapat dua makro: Satu ialah Utama, yang merupakan makro kosong lalai, dan lain-lain ialah ujian, makro yang kami buat di atas. Kami kini akan meningkatkan makro ujian.

Makro kami akan melakukan tugas berikut:

  • Semak mana semua orang mempunyai profesion penulis
  • Buat helaian baharu
  • Alihkan semua entri untuk penulis dalam helaian baharu

Berikut ialah Makro kami:

Sub test rem Alihkan entri dengan profession Writer ke helaian baharu dim crs(8) sebagai objek malap j sebagai Integer malap prof sebagai objek malap i sebagai Integer malap sh sebagai objek malap sh2 sebagai objek sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 untuk i = 1 hingga 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Simpan baris lengkap dalam pembolehubah Jika prof.string = "Penulis" Kemudian crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 Tamat Jika seterusnya saya rem Sekarang buat helaian baharu dan tulis data ini di sana ThisComponent.Sheets.insertNewByName("Writers", 1) sh2 = ThisComponent.Sheets(1) i = 0 Do While not IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Gelung Akhir Sub

Biar saya terangkan makro di atas kepada anda bahagian demi bahagian.

Sub ujian. . . Tamat Sub

ujian ialah nama makro kami, oleh itu dalam kod, ia ditandakan sebagai Sub ujian (sub = subrutin). Begitu juga kita mengakhiri kod makro ini dengan pernyataan Tamat Sub. Ambil perhatian bahawa pernyataan ini ditambah secara automatik apabila kami mencipta makro daripada menu, walaupun pengguna boleh terus menulis kod makro di sini dan nama Subrutin akan dianggap sebagai nama makro.

rem 

Semua komen dalam LibreOffice Basic bermula dengan kata kunci rem. Baris lengkap yang bermula dengan rem dianggap sebagai ulasan. Cara lain ialah menggunakan ' (koma terbalik tunggal) pada permulaan baris.

malapkan crs(8) sebagai objek malap j sebagai Integer malap prof sebagai objek malap i sebagai Integer malap sh sebagai objek malap sh2 sebagai objek

Ini adalah perisytiharan berubah-ubah dalam LibreOffice Basic. Sintaks umum ialah malap sebagai . Untuk mengisytiharkan tatasusunan, gunakan sintaks yang serupa dengan pembolehubah crs, dengan 8 ialah panjang tatasusunan.

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

Komponen ini merujuk kepada dokumen semasa. Dalam kes ini ia adalah Lembaran Kerja Calc. Kami memuatkan Helaian dengan indeks 0, iaitu, helaian pertama, dalam pembolehubah sh. Terdapat juga fungsi untuk memuatkan Helaian menggunakan nama.

Seterusnya kita panggil fungsi getCellRangeByPosition objek sh dan muatkannya ke dalam array crs. Julat Sel merujuk kepada sekumpulan sel dalam helaian berdasarkan kedudukan.

Perhatikan bahawa hujah, 0, 0 (lajur 0, baris 0) menandakan sel permulaan julat dan 3, 0 (lajur 3, baris 0) menandakan sel pengakhiran julat. Justeru 0, 0, 3, 0 merujuk kepada baris pertama (tajuk) helaian sampel kami.

untuk i = 1 hingga 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Simpan baris lengkap dalam pembolehubah Jika prof.string = "Penulis" Kemudian crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Tamat Jika seterusnya i

Kami menggunakan a untuk pernyataan untuk menggelung melalui baris. The untuk bongkah berakhir dengan a seterusnya pernyataan, yang menambah pembolehubah i pada akhir setiap lelaran.

Seterusnya kita panggil fungsi GetCellByPosition daripada objek sh. Kami lulus parameter (3, i), iaitu, dengan setiap lelaran, objek sel pada lajur 3 dan baris i diambil dalam prof berubah.

Kemudian kita menggunakan an Jika pernyataan untuk menyemak sama ada nilai dalam sel prof ialah "Penulis". Jika ya, kami memanggil semula fungsi itu getCellRangeByPosition, kali ini, dengan i sebagai ganti nombor baris mula dan akhir. Sekali lagi kami menyimpannya dalam tatasusunan crs.

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

Mula-mula kita buat helaian baharu dengan nama Penulis, pada kedudukan 1, iaitu kedudukan ke-2, kerana indeks bermula pada 0. Kemudian kita mendapat objek helaian yang baru dibuat ini, supaya kita boleh memasukkan data penulis dalam helaian ini.

i = 0 Lakukan Walaupun bukan IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Gelung

The Lakukan Sementara pernyataan gelung digunakan apabila kita ingin gelung berdasarkan syarat, berbanding gelung dalam julat nilai integer, yang digunakan untuk seperti yang ditunjukkan sebelum ini. Di sini, kita gelung sehingga crs(i) bukan batal.

Seterusnya, kami memanggil sekali lagi getCellRangeByPosition dengan cara yang sama seperti sebelum ini untuk mendapatkan objek julat dalam helaian baharu.

Akhirnya, kami memanggil dua fungsi: getDataArray yang mengembalikan data daripada crs(i), iaitu, satu baris data (tentang seorang penulis) daripada helaian pertama; dan kami menulis data ini ke julat sel dalam helaian baharu menggunakan setDataArray.

Akhir sekali, simpan makro daripada Fail » Simpan semua pilihan.

Untuk menjalankan makro, pergi ke Alat » Makro » Jalankan Makro dan pilih Makro anda daripada direktori "Makro Saya" dalam Pustaka Pemilih Makro. Klik pada Lari butang selepas memilih Nama Makro.

Menjalankan makro di atas pada hamparan sampel kami, menghasilkan hasil berikut.

Ini adalah cara untuk mencipta makro dalam LibreOffice. Untuk maklumat lanjut dan pilihan, rujuk kepada dokumentasi rasmi.

? Cheers!

Kategori: Apl