Πώς να δημιουργήσετε και να εκτελέσετε μια μακροεντολή στο LibreOffice Calc στο Linux

Το LibreOffice είναι η απάντηση του κόσμου FOSS στην κύρια και αποκλειστική σουίτα Microsoft Office. Αναπτύχθηκε από κορυφαίους προγραμματιστές και συνεργάτες λογισμικού Office Productivity, προσφέρει μια πλήρη αντικατάσταση του Microsoft Office σε πολλαπλά λειτουργικά συστήματα.

Το αντίστοιχο της εφαρμογής LibreOffice του Microsoft Excel ονομάζεται LibreOffice Calc. Έρχεται με μια σειρά από χαρακτηριστικά και μια διεπαφή παρόμοια με το Excel. Διαθέτει ενσωματωμένη μηχανή Macro για την ανάπτυξη και την εκτέλεση μακροεντολών για αυτοματισμό. Ωστόσο, δεν υποστηρίζει τη Visual Basic, αλλά υποστηρίζει τη δική του γλώσσα. LibreOffice Basic, για προγραμματισμό μακροεντολών.

Η σουίτα LibreOffice είναι προεγκατεστημένη στις περισσότερες διανομές Linux, συμπεριλαμβανομένων των Ubuntu, Debian, Fedora και CentOS.

Δημιουργία και εκτέλεση μακροεντολής στο LibreOffice Calc

Αρχικά, ας δημιουργήσουμε ένα φύλλο εργασίας με μερικά δείγματα δεδομένων.

Για να ανοίξετε τον διοργανωτή μακροεντολών, μεταβείτε στο Εργαλεία » Μακροεντολές » Οργάνωση μακροεντολών » Βασικά στοιχεία του LibreOffice. Θα ανοίξει το Βασικές μακροεντολές LibreOffice παράθυρο όπως φαίνεται στο στιγμιότυπο οθόνης παρακάτω.

Εισαγάγετε ένα νέο όνομα για τη μακροεντολή και, στη συνέχεια, κάντε κλικ στο κουμπί Νέο στην κάτω δεξιά πλευρά του παραθύρου.

Θα πρέπει τώρα να δείτε την οθόνη του επεξεργαστή Macro στο LibreOffice Basic.

Όπως μπορούμε να δούμε, οι μακροεντολές που δημιουργούνται με μη αυτόματο τρόπο δημιουργούνται από προεπιλογή στο "My Macros & Dialogs -> Standard -> Module1".

Επί του παρόντος υπάρχουν δύο μακροεντολές: Η μία είναι Κύριος, που είναι μια προεπιλεγμένη κενή μακροεντολή, και άλλο είναι δοκιμή, τη μακροεντολή που δημιουργήσαμε παραπάνω. Τώρα θα βελτιώσουμε τη δοκιμαστική μακροεντολή.

Η μακροεντολή μας θα κάνει τις ακόλουθες εργασίες:

  • Ελέγξτε ποιοι όλοι οι άνθρωποι έχουν επάγγελμα συγγραφέα
  • Δημιουργήστε ένα νέο φύλλο
  • Μετακινήστε όλες τις καταχωρήσεις για συγγραφείς σε νέο φύλλο

Ακολουθεί η μακροεντολή μας:

Sub test rem Μετακίνηση εγγραφών με επάγγελμα Writer σε νέο φύλλο dim crs(8) ως αντικείμενο dim j ως ακέραιος dim prof ως αντικείμενο dim i ως ακέραιος dim sh ως αντικείμενο dim sh2 ως αντικείμενο sh = ThisComponent.Sheets(0) crs(0) = sh.getCellRangeByPosition(0, 0, 3, 0) j = 1 για i = 1 έως 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Αποθηκεύστε την πλήρη σειρά στη μεταβλητή If prof.string = "Writer" Τότε crs(j) = sh.getCellRangeByPosition(0, i, 3, i) j = j + 1 End If next i rem Τώρα δημιουργήστε ένα νέο φύλλο και γράψτε αυτά τα δεδομένα εκεί 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 Loop End Sub

Επιτρέψτε μου να σας εξηγήσω την παραπάνω μακροεντολή ενότητα προς ενότητα.

Υπο δοκιμή. . . End Sub

δοκιμή είναι το όνομα της μακροεντολής μας, επομένως στον κώδικα, συμβολίζεται ως Υποδοκιμή (υπο = υπορουτίνα). Ομοίως τελειώνουμε αυτόν τον κωδικό μακροεντολής με δήλωση End Sub. Σημειώστε ότι αυτές οι δηλώσεις προστίθενται αυτόματα όταν δημιουργούμε μια μακροεντολή από το μενού, αν και ο χρήστης μπορεί να γράψει απευθείας τον κωδικό μακροεντολής εδώ και το όνομα της υπορουτίνας θα θεωρηθεί ως όνομα μακροεντολής.

rem 

Όλα τα σχόλια στο LibreOffice Basic ξεκινούν με τη λέξη-κλειδί rem. Μια πλήρης γραμμή που αρχίζει με rem θεωρείται σχόλιο. Ένας άλλος τρόπος είναι να χρησιμοποιήσετε ' (μονό ανεστραμμένο κόμμα) στην αρχή της γραμμής.

dim crs(8) ως αντικείμενο dim j ως ακέραιος dim prof ως αντικείμενο dim i ως ακέραιος dim sh ως αντικείμενο dim sh2 ως αντικείμενο

Αυτή είναι η δήλωση μεταβλητής στο LibreOffice Basic. Η γενική σύνταξη είναι αμυδρό ως . Για να δηλώσετε έναν πίνακα, χρησιμοποιήστε σύνταξη παρόμοια με τη μεταβλητή crs, όπου το 8 είναι το μήκος του πίνακα.

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

Αυτό το συστατικό αναφέρεται στο τρέχον έγγραφο. Σε αυτή την περίπτωση είναι ένα φύλλο εργασίας Calc. Φορτώνουμε το φύλλο με δείκτη 0, δηλαδή το πρώτο φύλλο, στη μεταβλητή sh. Υπάρχουν επίσης λειτουργίες για τη φόρτωση ενός Φύλλου χρησιμοποιώντας όνομα.

Στη συνέχεια καλούμε συνάρτηση getCellRangeByPosition του αντικειμένου sh και το φορτώστε στον πίνακα crs. Το εύρος κελιών αναφέρεται σε μια ομάδα κελιών στο φύλλο με βάση τη θέση.

Σημειώστε ότι τα επιχειρήματα, 0, 0 (στήλη 0, σειρά 0) δηλώνουν το αρχικό κελί της περιοχής και 3, 0 (στήλη 3, σειρά 0) δηλώνουν το τελικό κελί της περιοχής. Ετσι 0, 0, 3, 0 αναφέρεται στην πρώτη (επικεφαλίδα) σειρά του φύλλου δειγμάτων μας.

για i = 1 έως 5 x = 1 prof = sh.GetCellByPosition(3, i) rem Αποθήκευση πλήρους σειράς στη μεταβλητή If prof.string = "Writer" Τότε crs(j) = sh.getCellRangeByPosition(0, i, 3, i ) j = j + 1 Τέλος Αν επόμενο i

Χρησιμοποιούμε α Για δήλωση για να περιηγηθείτε στις σειρές. ο Για το μπλοκ τελειώνει με α Επόμενο δήλωση, η οποία αυξάνει τη μεταβλητή i στο τέλος κάθε επανάληψης.

Στη συνέχεια καλούμε μια συνάρτηση GetCellByPosition του αντικειμένου sh. Περνάμε παραμέτρους (3, i), δηλαδή, με κάθε επανάληψη, το αντικείμενο του κελιού στη στήλη 3 και τη σειρά i ανακτάται στη μεταβλητή prof.

Στη συνέχεια χρησιμοποιούμε ένα Αν δήλωση για να ελέγξετε εάν η τιμή στο κελί prof είναι "Writer". Εάν είναι, καλούμε ξανά τη συνάρτηση getCellRangeByPosition, αυτή τη φορά, με Εγώ στη θέση του αριθμού σειράς έναρξης και λήξης. Και πάλι το αποθηκεύουμε στον πίνακα crs.

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

Αρχικά δημιουργούμε ένα νέο φύλλο με όνομα Συγγραφείς, στη θέση 1, η οποία είναι η 2η θέση, καθώς το ευρετήριο ξεκινά από το 0. Στη συνέχεια, λαμβάνουμε ένα αντικείμενο αυτού του φύλλου που δημιουργήθηκε πρόσφατα, ώστε να μπορέσουμε να εισαγάγουμε τα δεδομένα των εγγραφών σε αυτό το φύλλο.

i = 0 Do while not IsNull(crs(i)) sh2range = sh2.getCellRangeByPosition(0, i, 3, i) sh2range.setDataArray(crs(i).getDataArray) i = i + 1 Βρόχος

ο Κάνετε Ενώ Η δήλωση βρόχου χρησιμοποιείται όταν θέλουμε να κάνουμε βρόχο βάσει συνθηκών, σε αντίθεση με τον βρόχο σε μια περιοχή ακέραιων τιμών, για τις οποίες χρησιμοποιούμε Για όπως φαίνεται προηγουμένως. Εδώ, κάνουμε βρόχο μέχρι crs(i) δεν είναι μηδενικό.

Στη συνέχεια, καλούμε ξανά getCellRangeByPosition με παρόμοιο τρόπο όπως πριν για να λάβετε ένα αντικείμενο εμβέλειας στο νέο φύλλο.

Τέλος, καλούμε δύο συναρτήσεις: getDataArray που επιστρέφει τα δεδομένα από crs(i), δηλαδή, μια σειρά δεδομένων (σχετικά με έναν εγγραφέα) από το πρώτο φύλλο. και γράφουμε αυτά τα δεδομένα στην περιοχή κελιών σε νέο φύλλο χρησιμοποιώντας setDataArray.

Τέλος, αποθηκεύστε τη μακροεντολή από Αρχείο » Αποθήκευση όλων επιλογή.

Για να εκτελέσετε τη μακροεντολή, μεταβείτε στο Εργαλεία » Μακροεντολές » Εκτέλεση μακροεντολών και επιλέξτε τη μακροεντολή σας από τον κατάλογο "My Macros" στη Βιβλιοθήκη επιλογέα μακροεντολών. Κάντε κλικ στο Τρέξιμο κουμπί μετά την επιλογή ενός ονόματος μακροεντολής.

Εκτελώντας την παραπάνω μακροεντολή στο δείγμα υπολογιστικού φύλλου μας, προκύπτει το ακόλουθο αποτέλεσμα.

Αυτός είναι ο τρόπος δημιουργίας μακροεντολών στο LibreOffice. Για περισσότερες πληροφορίες και επιλογές, ανατρέξτε στην επίσημη τεκμηρίωση.

? Στην υγειά σας!