Libreoffice calc macro om een ​​groep bestanden te hernoemen. VBA-macro's schrijven in LibreOffice. Een macro maken in LibreOffice


Koppel

maar fundamenteel anders dan Microsoft Office Excel 2010.

In MS Excel 2010 is er een zogenaamd "lintmenu" - een revolutionaire oplossing van Microsoft, geïmplementeerd in MS Office 2007, wat velen niet leuk vonden, en er werden zelfs speciale hulpprogramma's ontwikkeld die het uiterlijk van MS Office 2010 teruggeven aan MS Office 2003.

Laten we de belangrijkste menu-items van de bovenstaande spreadsheet-editors eens nader bekijken.

In spreadsheeteditors (MS Excel, OOo Calc, LiO Calc, IBM Lotus Symphony Spreadsheets, enz.) is het belangrijkste element een "cel" en worden alle bewerkingen die in spreadsheeteditors worden uitgevoerd specifiek toegepast op cellen of een groep cellen (rijen , kolommen, enz.). Daarom zullen we allereerst de menu-items bekijken die verband houden met celopmaak.

In LiO Office worden, net als in MS Office 2003, cellen opgemaakt via het menu-item "Opmaak / Cellen" of met de sneltoets "Ctrl + 1".

In MS Excel 2010 wordt de celopmaak uitgevoerd op het tabblad "Home".

Andere MS Excel 2010 menu-items (Invoegen, Pagina-indeling, Formules, Gegevens, Review, etc.) in LiO Calc bevinden zich in gelijknamige menu-items.

Het volgende belangrijkste element van spreadsheets is "Functies", of het zijn "Formules".

In MS Excel en LiO Calc zijn de namen (afkortingen) van alle formules vergelijkbaar, dus de overgang van MS Excel naar LiO Calc voor specialisten die in MS Excel werken, zal niet moeilijk zijn. Een vrij gedetailleerde lijst van functies en hun correspondentie in MS Excel en OOo Calc (LiO Calc) gepubliceerd op de website van Infra-Resource, een toonaangevende integrator van oplossingen op basis van OpenOffice.org in de Russische Federatie. Maar er zijn ook "valkuilen" hier ... Dit zijn sneltoetsen. Voor degenen die gewend zijn om in MS Excel te werken met behulp van sneltoetsen, kunnen zich bepaalde problemen voordoen, maar zowel voor gewone gebruikers als voor organisaties kan het feit dat één exemplaar van MS Excel ten minste $ 55 kan besparen een behoorlijk sterke stimulans zijn om over te schakelen naar LiO.


Compatibiliteit

Een van de grootste pijnpunten bij het overschakelen van MS Excel naar LiO Calc zijn compatibiliteitsproblemen en het grootste probleem is het werken met macro's. Dit probleem was vooral acuut voor versies 1 en 2 van OpenOffice.org, sinds versie 3 in OpenOffice.org en LibreOffice is dit probleem praktisch opgelost. LibreOffice Calc 3.5 kan de meeste MS Excel-macro's uitvoeren. Activeer / deactiveer deze functie in het menu: Extra> Opties> Laden / Opslaan> VBA-eigenschappen

De analoog van VBA in LiO Calc is de StarBasic macrotaal (de versie is LibreOffice Basic), die dezelfde programmeerlogica gebruikt als Microsoft Visual Basic, dus het zal gemakkelijk zijn voor specialisten die met macro's in MS Excel hebben gewerkt om eraan te wennen LiO Calc.

De analoog van VBA in LiO Calc is de StarBasic-macrotaal.

Toch bleven er nog problemen bestaan. Feit is dat de omgeving waarin macro's worden geschreven een kantoorsuite is, geen macrotaal. De programmeertaal is dus geen onafhankelijke omgeving, maar volledig afhankelijk van de interne objectstructuur van de kantoorsuite en het daarin geïmplementeerde commando-oproepsysteem. Het resultaat is een technische onmogelijkheid om volledige compatibiliteit van macrotalen van verschillende kantoorsuites te garanderen. Daarom moet u Microsoft Office-macro's herschrijven voordat u ze in OpenOffice.org of LibreOffice uitvoert. Verder, om niet op alle technische details in te gaan, zal ik zeggen dat er conversieprogramma's zijn die het werk met VBA-macro's in LibreOffice aanzienlijk vereenvoudigen. Alle mogelijke vragen over het werken met VBA-macro's in de OpenOffice-omgeving worden ook uitgebreid besproken op de bedrijfswebsite van Infra-Resource (zie hierboven) in de secties Knowledge Base en OpenOffice.org User Support.

Laten we, om al het bovenstaande te consolideren, in de praktijk de compatibiliteit van MS Excel- en LiO Calc-documenten controleren. Neem hiervoor kant-en-klare sjablonen voor boekhouddocumenten van de website van het tijdschrift "Chief Accountant", die zijn opgesteld met MS Excel 97-2003 (XLS-extensie) en MS Excel 2010 (XLSX-extensie), en die een grote aantal wiskundige en economische functies. Als resultaat van het werken met bestanden (openen, bewerken, opslaan, converteren naar ODS), werd het volgende patroon opgemerkt: in de regel traden fouten op bij het inschakelen van macro's in versies van bestanden opgeslagen in MS Excel 98-2003 (.xls) formaat . In versies gemaakt in MS Excel 2007-2010 komen fouten veel minder vaak voor.

Bestanden die zijn gemaakt in MS Excel zonder gebruik van macro's kunnen worden geopend, gelezen, bewerkt, enz. helemaal geen problemen. De conversie van XLSX naar ODS en vice versa wordt ook foutloos uitgevoerd met behoud van de tekstopmaakparameters.

Bestanden die zijn gemaakt in MS Excel zonder gebruik van macro's kunnen worden geopend, gelezen, bewerkt, enz. helemaal geen problemen.


conclusies

We kunnen dus de volgende conclusies trekken.

Wat betreft de LibreOffice Calc-interface, gebruikers die eerder in MS Excel 98-2003 hebben gewerkt, zouden geen problemen moeten hebben om over te schakelen naar Calc, en degenen die gewend zijn om met de MS Excel 2007-2010 lintinterface te werken, zullen een beetje moeten wennen aan een ander soort werkvenster.

Gegevens in LiO Calc worden op dezelfde manier ingevoerd, bewerkt en gesorteerd als in MS Excel. Berekeningen worden uitgevoerd in LiO Calc met dezelfde functies als in MS Excel.

Wat betreft de complexiteit van het werken met macro's, moet worden opgemerkt dat in versies van LiO Calc en OOo Calc boven 3.0 dit probleem praktisch is opgelost, en als er fouten optreden, is het mogelijk om VBA-macro's naar LibreOffice Basic te converteren.

Sergey RYZHKOV

Vanaf nu wordt macrobeheer in LibreOffice op één plek in de interface geïmplementeerd.

De problemen zoals ik ze zie zijn:

Vanuit het menu Service-> Macro's-> Macro's beheren, zijn VIER verschillende dialoogvensters voor het beheren van macro's beschikbaar, voor elke beschikbare taal afzonderlijk. Basic, JavaScript, BeanShell en Python. En ze zijn allemaal anders.

Bovendien staat het dialoogvenster voor Basis u niet toe om macro's te beheren. Om de basismacro's daadwerkelijk te beheren, moet u een apart extra dialoogvenster openen.

Met de knop Bewerken in alle dialoogvensters kunt u de macro zelf bewerken, en helemaal niet de naam / locatie van de bibliotheek / module / dialoog.

Ik stel voor om al deze schande af te schaffen en EEN dialoog te maken voor het beheren van macro's en het starten van macro's.

Dit is ongeveer dit (ik deed het in het Engels, want in Bugzilla zal IEDEREEN begrijpen waar het over gaat en waarom):

Aan de linkerkant van het dialoogvenster beheren we alleen bibliotheken / modules / dialoogvensters en weten we ook hoe we moeten importeren / exporteren. En aan de rechterkant werken we direct met macro's: we starten, wijzen macro's toe aan gebeurtenissen en bewerken ze, indien nodig.

Er is geen scheiding door programmeertalen nodig, omdat LibreOffice zelf onderscheid maakt in welke programmeertaalmacro's in de bibliotheken worden geschreven en, zoals ik het begrijp, niet zal toestaan ​​dat een Python-module wordt gestart vanuit de Basisbibliotheek. Dit betekent dat je in mijn versie van het dialoogvenster LibreOffice moet dwingen om bibliotheken / modules op verschillende PL's met pictogrammen te selecteren, en ze zullen allemaal eenvoudig hiërarchisch in dezelfde boomstructuur staan.

Er is nog iets: in de huidige versie van LibreOffice is een externe APSO-extensie nodig om met macro's in Python te werken. Zonder dit zal het niet eens werken om de bijbehorende bibliotheek te maken. Waarom dit wordt gedaan, begrijp ik niet echt, en ook waarom deze extensie niet is opgenomen in de basisdistributie van LibreOffice, aangezien de basisfunctionaliteit gewoon niet werkt.

Dus bij het herwerken van het macrobeheerdialoogvenster, moet ook rekening worden gehouden met dit vreemde feit.

Ik gebruik Linux nu ongeveer 10 jaar. Ongeveer 5 jaar geleden begon ik OpenOffice te gebruiken, en 3 jaar geleden - LibreOffice. Tot mijn verbazing, en zelfs schande, heb ik geen macro's geschreven voor Calc. Maar voor Excel zijn er in die tijd genoeg verzameld, van eenvoudige formulieren en formules tot krachtige add-ons voor bedrijven die de voorbereiding van informatie automatiseren. Vandaag heb ik gezworen om langzaamaan het pakket en de mogelijkheden ervan te gaan bestuderen, waar ik behoorlijk wat tijd aan besteed.


Voor de meeste mensen is een macro iets onbegrijpelijks en misschien een onnodige uitvinding. Voor hen optimaliseert het niet alleen het werk niet, maar vergroot het ook. Deze mening wordt veroorzaakt door een gebrek aan begrip van de principes van het gebruik van macro's. Macro's worden gebruikt wanneer u een actie vaak moet uitvoeren. Meestal is dit hetzelfde type documentverwerking (complexe opmaak, selecties), soms formulieren om in te vullen, formules, berekeningen voor grafieken ... Op basis hiervan en op basis van onze voorkeuren kiezen we de manier om onze macro's op te slaan:

  • globaal(of add-on) - altijd beschikbaar wanneer u het programma opent;
  • formeel- beschikbaar bij het openen van een specifieke sjabloon;
  • lokaal- beschikbaar wanneer u alleen in een specifiek document werkt.

Dit laatste wordt minder vaak gebruikt, vooral in zeer complexe interactieve documenten.
Tegenwoordig gebruiken alleen kleine bedrijven die geen IT-specialisten in hun personeel hebben kantoorsuites (het maakt niet uit LibreOffice of MS Office) omdat ze "out of the box" zijn. In de meeste gevallen is de kantoorsuite slechts de basis waarop de add-ons worden ingezet, en de werknemer van het bedrijf vermoedt vaak niet eens hoeveel kleine maar erg handige dingen voor hem zijn gedaan totdat hij vertrekt of naar een andere verhuist bedrijf.


Het leren schrijven van macro's in Excel wordt aangeraden om te beginnen met de Record Macro tool. Inderdaad, door de stukjes van acties op te schrijven, volstaat het om je gewoon het oppervlakkige niveau van de taal en de API voor te stellen die je in de toekomst zult moeten gebruiken. Soms ook om snel een eenvoudige macro te maken, alsof je hem "weggooit door hem op te schrijven" en hem vervolgens oppoetst, en hem in de code-editor voor de geest haalt.

Het gereedschap Record Macro verbinden in LibreOffice 4.1

In LibreOffice 4.1 is de standaardfunctie “ Macro opnemen"Is gehandicapt. Daarom is het eerste wat u moet doen het inschakelen: OnderhoudOpties (GereedschapOpties) vouw de LibreOffice-groep uit en helemaal onderaan in het item " Uitgebreide mogelijkheden» (« Geavanceerd") Vink het vakje aan tegen" Macro-opname inschakelen (beperkt)» (« Macro-opname inschakelen (beperkt)»).

Daarna in je menu: Hulpmiddelen → Macro's (Hulpmiddelen → Macro's) het menu-item “ Macro opnemen» (« Macro opnemen»).

De macrorecorder gebruiken in LibreOffice 4.1

Om de tool te demonstreren “ Macro's opnemen»Hier is een eenvoudig voorbeeld:
1. Laten we een nieuw Calc-document openen en het op schijf opslaan onder een naam die voor u geschikt is;
2. Selecteer de cel A1;
3. Laten we macro-opname inschakelen Hulpmiddelen → Macro's → "Macro opnemen" (Hulpmiddelen → Macro's → "Macro opnemen"). Er verschijnt een paneel met een enkele knop " Opname beëindigen» (« Stop met opnemen»);
5. Selecteer de cel B1 en klik op " Opname beëindigen» (« Stop met opnemen»);
6. Het volgende venster wordt geopend:

We maken een macro met alleen toegang in dit document, daarom openen we het item met de naam van het document (ik heb article.ods, je hebt deze naam waaronder je het document hebt opgeslagen) en selecteer de enige aanwezige bibliotheek Standaard... Er zitten nog geen modules in, dus laten we die maken.
7. Druk op de knop " Module maken» (« Nieuwe module") En voer in het geopende venster de naam van de module in.

Standaard wordt de module gemaakt met een lege macro genaamd Hoofd... Laten we het veld invoeren " Macronaam» (« Macronaam") Ik heb de gewenste naam ingevoerd" Hoofd") En klik" Schrijf op» (« Opslaan») Om de macro op te slaan die we hebben opgenomen. In mijn geval verschijnt er een waarschuwing dat er al zo'n naam voor de macro is.

De macro wordt opgenomen en als we het document nu opslaan, wordt de macro ermee opgeslagen. Dit betekent dat elke keer dat we dit document openen, we deze macro kunnen gebruiken.

Een LibreOffice 4.1-macro starten en bewerken

Er zijn twee manieren om een ​​macro uit te voeren in LibreOffice 4.1.
Open eerst het venster " Macro uitvoeren»: Hulpmiddelen → Macro's → "Macro uitvoeren"(Hulpmiddelen → Macro's → "Macro uitvoeren ..."), selecteer de gewenste macro en druk op " Loop».

De uitnodiging is ontvangen. :)

Hallo hackers!
Vandaag wil ik je vertellen over het gebruik van macro's in LibreOffice.

Voorwoord
Elke dag thuis en op het werk gebruiken we kantoortoepassingen om alle taken uit te voeren. Het komt vaak voor dat je je specialiseert in één taak en uiteindelijk dezelfde taken uitvoert: dezelfde tekst invoegen, opmaken met een groot aantal sneltoetsen. In al deze gevallen kunt u uw kostbare werktijd besparen door een deel van uw werk te automatiseren.
Verderop in het artikel zal ik je vertellen over het gebruik van macro's in LibreOffice.

Wat zijn macro's en waarom zijn ze?

macro is een opeenvolging van bepaalde acties die kunnen worden vastgelegd met behulp van het gebruikelijke menu. Wanneer u een macro-opname selecteert, worden de acties die u uitvoert automatisch opgeslagen als scriptcode. En in uw verdere werk zal het al onafhankelijk worden uitgevoerd, waarbij uw acties in het programma precies worden herhaald. Een macro kan even eenvoudig als zeer complex zijn - het hangt allemaal af van het soort resultaat dat u wilt bereiken. Het belangrijkste criterium voor macro's is dat ze tegelijkertijd krachtig en gebruiksvriendelijk moeten zijn. LibreOffice-macro's voldoen precies aan deze vereisten. Laten we het in de praktijk proberen.

Om het pakket te gebruiken: LibreOffice, U moet een vooraf geïnstalleerd besturingssysteem Linux, Windows of MacOS hebben, evenals het LibreOffice-pakket geïnstalleerd (u kunt het bijvoorbeeld installeren vanuit de ppa-repository's, zoals beschreven in het onderwerp)

Macrobeheer

Voordat we beginnen met het maken van onze eigen macro, moeten we kennis maken met de macrobeheertool. We gaan langs de weg Extra - Macro's - Macro's organiseren - LibreOffice Basic-macro's(Extra - Macro's - Macro's beheren - LibreOffice Basic-macro's):

In de linkerkolom van het venster zien we een lijst met geïnstalleerde standaardmacro's. Door op een van deze te klikken, kunt u deze bewerken of verwijderen.
De hoofdtaak van het raam- selecteer de macro die u nodig hebt, wijs deze toe aan een knop op de werkbalk of associeer deze met een gebeurtenis. Door een knop aan een macro toe te wijzen, kunt u de meestgebruikte macro's snel uitvoeren.

Ik wil opmerken dat het maken van een macro in automatische modus (opname) op zijn minst een beetje kennis van de taal vereist voor het schrijven van macro's, omdat we het soms moeten bewerken. Om te zien hoe de macro eruitziet, selecteert u de macro die we nodig hebben en drukt u op Bewerking(Bewerking). Hieronder ziet u een voorbeeld van hoe de macro eruitziet in de broncode:

Laten we een eenvoudig voorbeeld nemen. We hebben al wat tekst in het document ingevoegd en we moeten er een titel voor maken, omdat onze tekst zal worden gebruikt in zakelijke correspondentie.
Onze toekomstige macro zou in staat moeten zijn om:
- plaats de tekst bovenaan in het midden van de pagina;
- voer tekst in die als titel zal worden gebruikt.
Nadat we een macro hebben gemaakt, zullen we er een knop op de werkbalk aan toewijzen. Daarna is één muisklik voldoende om de titel in het document in te voegen.
Laten we de volgorde van stappen volgen.

Stap 1.
Open een tekstdocument. Laten we verder gaan Hulpmiddelen - Macro's - Macro opnemen... Er verschijnt een klein venster "Macro opnemen" met een enkele knop "Macro beëindigen" ( Stop met opnemen):

Stap 2.
Laten we een titel voor de tekst maken. Laten we op de knop klikken "Centrale uitlijning"("Gecentreerd"), zodat onze toekomstige tekst precies in het midden van het document staat. Nu schrijven we de tekst van de titel zelf. U moet er geen verschillende formaten voor instellen (lettertype of vet / cursief / onderstreept), omdat de macro dergelijke acties niet onthoudt.

Stap 3.
Nadat het maken van de titel is voltooid, klikt u op de knop "Macro beëindigen" in het venster "Macro opnemen". Het venster Macro Organizer verschijnt onmiddellijk. Geef de nieuwe macro een naam (bijvoorbeeld PostHead). Nu kunt u het opslaan waar u maar wilt (bijvoorbeeld de map " Mijn macro").

Stap 4.
Nu hoeven we alleen nog een knop op de werkbalk voor de macro toe te voegen PostHead... Dit proces is niet zo eenvoudig als het op het eerste gezicht lijkt.
We openen LibreOffice Basic-macro's, druk op de knop " Toewijzen"(" Toewijzen "). Het volgende venster verschijnt Aanpassen, waarin we naar het tabblad moeten gaan Werkbalken en zorg ervoor dat het veld "Toolbar" op "Standaard" staat ( Standaard) .

Klik in dit venster op de knop "Toevoegen" ( Toevoegen). Er verschijnt een ander venster - "Opdrachten toevoegen" ( Opdrachten toevoegen).
In de lijst van het linkervenster "Categorieën" ( Categorie) we vinden " LibreOffice-macro's"(helemaal onderaan de lijst). Open het en ga naar onze macro. Zodra we het vinden, blijft het om de laatste en eenvoudigste stap uit te voeren. Sleep de briefhoofdmacro met de muis naar de plaats van de werkbalk waar we willen het graag zien.
Alles, ging met de taak om.
Nu hoeven we alleen nog maar de knop te gebruiken PostHoofd, die we aan het paneel hebben toegevoegd. Open bijvoorbeeld een nieuw document en klik op de knop PostHead... Onze macro maakt een titel met precies de tekst die we eraan hebben "toegewezen" en plaatst deze bovenaan het document, precies in het midden.
Is het niet handig?

Resultaat
In mijn voorbeeld hebben we natuurlijk een heel eenvoudige macro gemaakt. Maar met de bovenstaande tools kunt u ook zeer complexe macro's maken. En niet alleen in auteur, maar ook in alle andere toepassingen van het pakket LibreOffice(Spreadsheet, Presentaties, enz.). Nu u weet hoe u macro's maakt, kunt u eenvoudig uw eigen macro's maken om uw werk gemakkelijker te maken.
Het doel van dit artikel is om de basis te leren van het werken met een macro-opnametool.

Ik publiceer alle materialen in twee formaten - odt en pdf... De laatste is handig voor distributie. Exporteren naar pdf uitgevoerd met standaard middelen van LibreOffice via het dialoogvenster " Bestand -> Exporteren naar PDF". Tijdens het proeflezen van de handleiding en het corrigeren van fouten erin, moet u het document vaak opnieuw opslaan. En om het document niet elke keer handmatig te exporteren, dacht ik dat het leuk zou zijn als dit automatisch gebeurt bij het opslaan odf het dossier. En kennis van de LibreOffice macrotaal is in dit geval absoluut niet nodig.

De taak wordt opgelost met behulp van de macro-opnamefunctie. Het is niet standaard beschikbaar. Om het in te schakelen ga naar " Extra -> Opties"In hoofdstuk" LibreOffice"Selecteer het artikel" Uitgebreide mogelijkheden"En vink het vakje aan naast" Macro-opname inschakelen».

Na het herstarten van LibreOffice in de “ Hulpmiddelen → Macro's"Het voorwerp" Macro opnemen».

Na het klikken op " Extra -> Macro's -> Macro opnemen"Een venster met een knop" Opname beëindigen».

De bottom line is simpel:

  1. Macro-opname inschakelen
  2. Voer de vereiste actie uit terwijl de opname bezig is. In mijn geval heb ik zojuist de export naar PDF uitgevoerd via " Bestand -> Exporteren naar PDF»
  3. Klik op de " Opname beëindigen»
Dat is alles, de export naar PDF-macro is opgenomen, u hoeft deze alleen maar op te slaan.

Voor het gemak heb ik een module gemaakt “ Exporteren naar PDF" In de bibliotheek " Standaard"En mijn macro opgeslagen in deze module.

Nu rest alleen nog het toewijzen van de activering van de macro aan een specifieke gebeurtenis. In ons geval om het document op te slaan. We gaan naar " Dienst -> Instellingen"Naar de" ontwikkelingen».