Macro's maken mbv dialogen?

Valewijn
Berichten: 5
Lid geworden op: wo mar 10, 2010 12:11 pm

Macro's maken mbv dialogen?

Bericht door Valewijn »

Als zeer ervaren macro-programmeur in Microsoft Office kon ik bv. tijdens het registreren van een macro gewoon een dialoog oproepen, gegevens veranderen en opslaan. In de betreffende macro werd dan getoond welke instructie bij een bepaalde gegeven thuishoort.

In het geval van een pagina liggend te maken, hanteer ik de onderstaande macro in Microsoft Office.
With ActiveDocument.PageSetup
..................Orientation = wdOrientLandscape
..................PageWidth = CentimetersToPoints(29.7)
..................PageHeight = CentimetersToPoints(21)
End With
Eventueel de getallen wijzigen en klaar is kees. Je ziet dat in de macro zelf geen enkel dialoog wordt opgeroepen. Dus op zich moet het wel mogelijk zijn om instructies te genereren aan de hand van de gewenste wijzigingen in een dialoog. Althans in Microsoft Office wel.

Maar waarom is dat niet mogelijk in OpenOffice (Volgens RPG)? Als het via een dialoog een instructie niet gegenereerd kan worden, hoe kom ik er dan achter welke instructie ik moet gebruiken?

Met andere woorden: hoe stel ik een pagina liggend in? En hoe pas je de marges daarbij aan. Alle vragen die (helaas) in een dialoog worden beantwoord, maar niet opgenomen wordt in een macro!

Valewijn
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door RPG »

Hallo

De waarom vraag kan alleen beantwoordt worden door de ontwerpers want het is niet geimplementeerd.

Ik wil wijzen op een belangrijk verschil van jouw vraag en de vraag waar je naar verwijs.

Als jouw vraag betrekking heeft op een echte macro, denk ik dat het mogelijk moet zijn. De vraag waar je naar verwijs had betrekking op een opgenomen macro die direct een gebruikers reactie verwachtte en dat kan niet op gelost worden.

Jouw feitelijke vraag begrijp ik niet daar je veel kennis van MSO verwacht wat ik niet heb. Ook verwacht je veel andere kennis namelijk macro maken voor een spreadsheet: ook dat heb ik niet.

Als je zelf de macro wilt maken en dus ook de dialoog vensters dan moet je ook echt zelf de macro schrijven. Op zich zelf hoeft dat niet zo moeilijk te zijn als je het API model een beetje kunt begrijpen. Als je macros wilt gaan schrijven moet jet het service en interface idee van de API gaan begrijpen anders worden de macros nodeloos ingewikkeld.

Wat je misschien ook kunt proberen is de macro opnemen en het dialoog venster proberen te omzeilen door de macro aan te passen. Ik wil er op wijzen dat er een groot verschil is tussen opgenomen macro en zelf geschreven macros.
http://www.openoffice.org/files/documen ... rence.html
De link heeft alleen betrekking op iets voor opgenomen macros.

Ik begrijp overigens niet waar om je dit met een macro wilt oplossen maar misschien is het alleen een voorbeeld.

In de help files staat hoe je een dialoog kunt maken.

http://wiki.services.openoffice.org/wik ... e/Language.

Misschien is mijn reactie wat kortaf maar er is een groot verschil tussen MSO en OOo. Dit komt vooral naar voren in de API en macros.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Valewijn
Berichten: 5
Lid geworden op: wo mar 10, 2010 12:11 pm

Re: Macro's maken mbv dialogen?

Bericht door Valewijn »

RPG schreef:Hallo

De waarom vraag kan alleen beantwoordt worden door de ontwerpers want het is niet geimplementeerd.

Ik wil wijzen op een belangrijk verschil van jouw vraag en de vraag waar je naar verwijs.

Als jouw vraag betrekking heeft op een echte macro, denk ik dat het mogelijk moet zijn. De vraag waar je naar verwijs had betrekking op een opgenomen macro die direct een gebruikers reactie verwachtte en dat kan niet op gelost worden.

Jouw feitelijke vraag begrijp ik niet daar je veel kennis van MSO verwacht wat ik niet heb. Ook verwacht je veel andere kennis namelijk macro maken voor een spreadsheet: ook dat heb ik niet.

Als je zelf de macro wilt maken en dus ook de dialoog vensters dan moet je ook echt zelf de macro schrijven. Op zich zelf hoeft dat niet zo moeilijk te zijn als je het API model een beetje kunt begrijpen. Als je macros wilt gaan schrijven moet jet het service en interface idee van de API gaan begrijpen anders worden de macros nodeloos ingewikkeld.

Wat je misschien ook kunt proberen is de macro opnemen en het dialoog venster proberen te omzeilen door de macro aan te passen. Ik wil er op wijzen dat er een groot verschil is tussen opgenomen macro en zelf geschreven macros.
http://www.openoffice.org/files/documen ... rence.html
De link heeft alleen betrekking op iets voor opgenomen macros.

Ik begrijp overigens niet waar om je dit met een macro wilt oplossen maar misschien is het alleen een voorbeeld.

In de help files staat hoe je een dialoog kunt maken.

http://wiki.services.openoffice.org/wik ... e/Language.

Misschien is mijn reactie wat kortaf maar er is een groot verschil tussen MSO en OOo. Dit komt vooral naar voren in de API en macros.

Romke
Dag Romke,

In MSO (voornamelijk Word) leerde ik macro’s maken door gewoon op de opname-toets te klikken, handelingen te verrichten en vervolgens de opname stoppen. Dan las ik in de macro welke commando’s waren gebruikt. Zo bouwde ik mijn woordenkennis op. Als ik het ook zo deed bij OOo, dan zou ik al doende leren welke commando’s er worden gebruikt. De ontwerpers hebben daar helaas (nog) niet aangedacht.

Ik heb geen woordenboek MSO – OOo en helaas bestaat zoiets niet. Jammer genoeg worden de commando’s in dialogen niet apart vermeld. Op zich heb ik geen dialogen nodig, het was alleen een hulpmiddel om achter te komen welk instructie nodig was om bv. een pagina liggend te maken (landscape). En zo ook voor alle andere mogelijkheden en instellingen.

De link naar de referenties die je mij gaf, toonde mij een aantal commando’s. Op zich is het nuttig (al wordt erbij vermeld dat het “alleen” geldig is voor versie 2.0). Helaas kon ik deze niet terugvinden in Help van OpenOffice. Ook jammer dat er geen korte uitleg bijzat. Ik zou bv bij een (verzonnen) instructie als PaginaMarge iets vinden als:

Code: Selecteer alles

PaginaMarge (Links as integer, Rechts as integer, Boven as integer, Onder as integer)
En daaronder een (korte) uitleg.

Als ik in Macro-omgeving zit en de cursor zit in een instructie-woord, dan geeft F1 aan dat er geen onderwerp is gevonden. Bij MSO krijg ik meteen een (uitgebreide) uitleg over dat woord (contextgevoelig).

Ondertussen moet ik nog de weg weten te vinden op de site van OpenOffice.org. Ondertussen kwam ik toevallig hierop uit om een pagina liggend te maken. Zulke info zou ik graag willen zien als voorbeeld om inzicht te krijgen.
Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object

Doc = ThisComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")

DefPage.IsLandscape = True
DefPage.Width = 21000
DefPage.Height = 14800
Alleen hoe vind je zulke informatie intuitief? Ik waardeer OpenOffice ten zeerste. Het zal niet makkelijk zijn om MSO te evenaren om gebruikersvriendelijk te zijn voor macro-ontwikkelaars. Ik heb nog een (lange) weg te gaan en zal er wel komen.

Dank voor je enige aanwijzingen. Ik hoop dat ik andere lezers ook een handje kan helpen (ooit).

Valewijn
Kantoor OpenOffice 3.1.1 (WinXP Professional) / Thuis OpenOffice 3.2.0 (Vista en WinXP Professional)
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door RPG »

Hallo

Na het lezen van het antwoord heb ik het idee dat het beter is om eerst de stylist te begrijpen dan het leren van macro's schrijven. De stylist is erg belangrijk in de vormgevig van OOo. Als je de stylist goed begrijpt dat kan dat later ook van nut zijn bij het maken van macros.

Ik heb op de zelfde manier geleerd alleen het laatste twee jaar heb ik mij echt verdiept in de API van OOo. Als je iets met macro wilt doen dan heb ik toch het idee dat je beter naar Engelse forums kunt gaan van wege de grotere kennis die daar is.

Het meeste wat in vroegere versies van OOo werkte, werkt nu nog steeds.

De gehele API staat op het internet:
http://api.openoffice.org/

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Valewijn
Berichten: 5
Lid geworden op: wo mar 10, 2010 12:11 pm

Re: Macro's maken mbv dialogen?

Bericht door Valewijn »

RPG schreef:Hallo

Na het lezen van het antwoord heb ik het idee dat het beter is om eerst de stylist te begrijpen dan het leren van macro's schrijven. De stylist is erg belangrijk in de vormgevig van OOo. Als je de stylist goed begrijpt dat kan dat later ook van nut zijn bij het maken van macros.

Ik heb op de zelfde manier geleerd alleen het laatste twee jaar heb ik mij echt verdiept in de API van OOo. Als je iets met macro wilt doen dan heb ik toch het idee dat je beter naar Engelse forums kunt gaan van wege de grotere kennis die daar is.

Het meeste wat in vroegere versies van OOo werkte, werkt nu nog steeds.

De gehele API staat op het internet:
http://api.openoffice.org/

Romke
Dag Romke,

Dank je wel voor je advies. Inderdaad moet men (eerst) de werking en de achtergrond van de macro's leren begrijpen. Het zal ook niet zo snel gebeuren dat een commando in versie 3.0 niet meer geldig is. De lijst van versie 2.0 is dus nog goed bruikbaar. Ik zal ook kijken in de Engelse forums.

Nogmaals dank!

Valewijn
Kantoor OpenOffice 3.1.1 (WinXP Professional) / Thuis OpenOffice 3.2.0 (Vista en WinXP Professional)
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door floris v »

Macro's maken in OOo is lastiger dan in MSO, ik heb me er dan ook nog nauwelijks aan gewaagd. Maar ik wil weerspreken dat het in Word allemaal zo intuïtief was, zo heb ik een keer het hoofdstuk met alle macrofuncties in Word-BASIC van A tot I moeten doorwerken om de naam van de functie te vinden waarmee je kunt vaststellen of een document bewerkt is sinds de laatste keer dat het opgeslagen is. IsDocumentDirty was dat, kun je nagaan dat ik dat al die jaren heb onthouden, zoiets verzin je niet als nuchter mens.
Sun staat er geloof ik om bekend dat ze het maken van een interface naar hun programma's graag zo moeilijk mogelijk maken, dat kun je aan het voorbeeld dat je hier gaf al goed zien, en dat is dan nog een eenvoudig voorbeeld. Ik zou de SDK voor OOo downloaden als je echt serieus macro's wil gaan bakken, daar is wel documentatie bij, maar bereid je voor op het ergste, en natuurlijk is het allemaal in het Engels.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door RPG »

Hallo

Het gevraagde bleef langer bij mij hangen dan gewoon is. Dat maakte dat ik ben gaan zoeken op het Engelse forum.

Als je iets wilt weten over OOo dan is het beter te zoeken op de forums dan op het gehele internet. Maar ongericht zoeken geeft nog steeds vele treffers met onzin. Als je het zoeken wat gerichter kunt doen scheelt dat veel. Het zoeken op een auteur helpt vaak veel. In dit geval is de auteur JohnV een goed voorbeeld. Deze schrijft vaak kleine macro's met een gedegen kennis van OOo.

Misschien heb je iets aan de link die er uitvolgde.

http://www.oooforum.org/forum/viewtopic.phtml?t=94590


Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Valewijn
Berichten: 5
Lid geworden op: wo mar 10, 2010 12:11 pm

Re: Macro's maken mbv dialogen?

Bericht door Valewijn »

floris v schreef:Macro's maken in OOo is lastiger dan in MSO, ik heb me er dan ook nog nauwelijks aan gewaagd. Maar ik wil weerspreken dat het in Word allemaal zo intuïtief was, zo heb ik een keer het hoofdstuk met alle macrofuncties in Word-BASIC van A tot I moeten doorwerken om de naam van de functie te vinden waarmee je kunt vaststellen of een document bewerkt is sinds de laatste keer dat het opgeslagen is. IsDocumentDirty was dat, kun je nagaan dat ik dat al die jaren heb onthouden, zoiets verzin je niet als nuchter mens.
Sun staat er geloof ik om bekend dat ze het maken van een interface naar hun programma's graag zo moeilijk mogelijk maken, dat kun je aan het voorbeeld dat je hier gaf al goed zien, en dat is dan nog een eenvoudig voorbeeld. Ik zou de SDK voor OOo downloaden als je echt serieus macro's wil gaan bakken, daar is wel documentatie bij, maar bereid je voor op het ergste, en natuurlijk is het allemaal in het Engels.
Dag Floris,

Intuïtief? In vergelijking met OOo is Word "eenvoudiger". Eigenlijk kende ik Basic al als programmataal (naast COBOL en (T)Pascal). Dus eigenlijk maak ik een valse start.

Als ik grofweg naar OOo kijk, moet je eerst de huidige document definiëren en dan pas bv. een paginaformaat instellen (als ik de bovengenoemde voorbeeldmacro in OOo aanhaal). Waarom eigenlijk? Alsof je (zoals in Engeland) een snoer koopt, waarvan de stekker altijd los is bijgeleverd. Je moet dus eerst een stekker aanzetten. Dus als wij een document niet steeds hoeft te benoemen, geen stekker hoeft aan te zetten, scheelt dat.

OOo en MSO: beide zijn in Engels geschreven. Mijn eerste indruk is dat MSO leesbare taal voert. In OOo zie je bijna altijd "com.sun.star.beans" in de omschrijving.

Code: Selecteer alles

Dim oOpt(1) as new com.sun.star.beans.PropertyValue
Waarom niet gewoon zo (dit is natuurlijk een retorische vraag ;) )?

Code: Selecteer alles

Dim oOpt(1) as new PropertyValue
Het leest makkelijker.

En als je eraan toevoegt dat MSO de info in een dialoogvenster wel als aparte instructies in een macro weergeeft, waar OOo geen enkel info prijsgeeft, dan voelt dit wel als intuïtief.

Valewijn
Kantoor OpenOffice 3.1.1 (WinXP Professional) / Thuis OpenOffice 3.2.0 (Vista en WinXP Professional)
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door floris v »

Je hebt me verkeerd begrepen. Word is zeker makkelijker om mee te werken, ik krijg haast buikpijn van de code die je voor OOo moet invoeren, maar je moet het, zie het voorbeeld dat ik gaf, ook weer niet overdrijven.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
Valewijn
Berichten: 5
Lid geworden op: wo mar 10, 2010 12:11 pm

Re: Macro's maken mbv dialogen?

Bericht door Valewijn »

RPG schreef:Hallo

Het gevraagde bleef langer bij mij hangen dan gewoon is. Dat maakte dat ik ben gaan zoeken op het Engelse forum.

Als je iets wilt weten over OOo dan is het beter te zoeken op de forums dan op het gehele internet. Maar ongericht zoeken geeft nog steeds vele treffers met onzin. Als je het zoeken wat gerichter kunt doen scheelt dat veel. Het zoeken op een auteur helpt vaak veel. In dit geval is de auteur JohnV een goed voorbeeld. Deze schrijft vaak kleine macro's met een gedegen kennis van OOo.

Misschien heb je iets aan de link die er uitvolgde.

http://www.oooforum.org/forum/viewtopic.phtml?t=94590


Romke
Dag Romke,

Ja, ik weet dat je de goede sleutelwoorden moet hebben om gericht te kunnen zoeken. Had een probleem met cijfers in Writer in een tabel ("0,10" werd automatisch "0,1"). Zoek je dan naar digits, zero, nullen? Zag toevallig een antwoord op de engelse forum, waarbij de vrager "00" gebruikte in zijn verhaal. Ja, je moet erop komen om deze tekst te gebruiken om een antwoord te vinden.

Ik hou je tip in de gaten over "JohnV".

Valewijn
Kantoor OpenOffice 3.1.1 (WinXP Professional) / Thuis OpenOffice 3.2.0 (Vista en WinXP Professional)
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door RPG »

Hallo

Ik heb een manier gevonden zonder dat de dialoog vensters later een probleem geven. en ook zonder zelf te moeten programeren.

Maak eerst een gewenste pagina indeling in de stylist( stijlen en opmaak).

Start dan macro opnemen
voeg een pagina einde in met de gewenste pagina stijl
Sluit macro opnemen af en in het nieuwe venster op opnemen klikken dan wordt de macro opgeslagen. Je kunt dan ook een naam opgeven.

Voor de duidelijkheid
Het woord opnemen wordt in twee betekenissen gebruikt
a) record in het eerste geval
b) opslaan/bewaren in het tweede geval

Als je het meer in het algemeen wilt gebruiken dan zal waarschijnlijk ook destanddard sjabloon aangepast moeten worden.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
floris v
Berichten: 2107
Lid geworden op: za apr 11, 2009 3:30 pm
Locatie: Apeldoorn, Nederland

Re: Macro's maken mbv dialogen?

Bericht door floris v »

Beetje lang geleden alweer, maar toch nog een suggestie: om de dialoogvensters te omzeilen moet je uit een ander vaatje tappen. Hier staat een lijst elementen van de pagina-opmaak.

Disclaimer: ik zeg niets over het feit dat alle (nuttige) informatie twee keer op die pagina staat. :roll:

De oriëntatie (of een pagina het kenmerk staand of liggend heeft stel je dan zonder tussenkomst van dialogen in met de variabele IsLandscape: boolean. Dan alleen nog de goede interface met Uno vinden.
* AOO 4.1.11 en LibreOffice 7.6.1.2 op Ubuntu 20.x
* Heb je de survival guide voor het forum al gelezen?
Plaats reactie