Jump to content
  • 0

Automatisch Word openen, plak en sluiten,Visual Basic nodig?


rigo

Question

Posted

Nu inmiddels al een jaar bezig met Filemaker en moet zeggen dat ik al echt leuke dingen kan maken... mede dankzij dit forum! Bedankt daarvoor.

 

Wie o wie kan me met het volgende helpen?

 

Graag zou ik voor ons offerte systeem nieuwe pagina's willen toevoegen.

Dit zijn eigenlijk records met container velden.

 

Achter zo'n containerveld wil ik bij het aanmaken van een nieuwe record, dat deze een MS Word bestand aanroept.

 

Zo'n Word bestand moet al een behandeling zijn ondergaan. Oftewel, daar staat al informatie in.

 

(de reden dat ik een Word bestand in dit veld wil, is omdat je dan later makkelijk een lijntje erin kunt tekenen of een plaatje kunt toevoegen.)

 

D.m.v. een script open ik het Word document, dat is makkelijk.

Intussen heb ik ook al dmv een script een tekst gecopieerd en deze wil ik graag in het geopende Word document. Maar hoe krijg ik dat er nu in??

 

Ik wil geen handmatige CTRL-V gebruiken!

Nadat het er automatisch is ingeplakt dient het direct weer gesloten te worden en het dmv een script automatisch in mijn container gezet te worden. (zo dit ook in een soort stille modus kunnen?? zou helemaal gaaf zijn.)

 

Is dit makkelijk te doen? Hoe doen jullie dit? Of ben ik te omslachtig bezig?

 

Mergen heb ik al heel veel tijd aan besteed en moet zeggen dat dat niet zo'n gek idee is. Heeft één nadeel en dat is dat het SQL gebeuren er tussen zit en dat ik dan vaak meldingen krijg of ik de SQL server wil aanspreken of dat er een bepaald geheugen vol zit. Dit gaat me te ver boven de pet.

 

Met mijn eerder genoemde techniek is mijn Word bestand niet meer gekoppeld aan een SQL gebeuren.

 

Alvast bedankt.

19 answers to this question

Recommended Posts

  • 0
Posted

Beste,

 

Je zou zoiets kunnen doen in VBA (Visual Basic for Applications). Het document hoeft dan zelfs niet open te staan.

Stap 1: Op de positie waar de FileMaker-tekst moet komen, definieer je een 'Bookmark' (bladwijzer?) in Word (Insert>Bookmark). Dat is eigenlijk een ankerpunt, waar je macro later naartoe kan.

Stap 2: je maakt een macro die bij het openen van de template/het document naar dat ankerpunt gaat en daar de tekst uit het clipboard plakt. Ik heb een screenshot in bijlage. Tip: om de VBA-editor te activeren druk je op Alt-F11 (leuk hé). Copy Paste de volgende code:

Sub PlakTekst()
   Selection.Paste
End Sub

Private Sub Document_Open()
   Bookmarks("PlakTekst").Select
   Call PlakTekst
   Me.Close savechanges:=True
End Sub

Stap 3: vanuit FileMaker open je het document via de 'send event' script step.

 

Er zal wel meer sleutelwerk aan zal zijn vooraleer je zoiets in productie kunt zetten. Waarschijnlijk wil je die docs eerst op een bepaalde plaats onder een bepaalde naam opslaan. Met wat VBA-kennis worden de mogelijkheden onbeperkt, maar daar kruipt leertijd in. Tip: neem macro's op via de recorder en 'steel' de code die daarmee wordt gemaakt.

 

Groeten,

 

Joris

screenshot.thumb.JPG.10055520cfe13d728d17788a34dd281a.JPG

  • 0
Posted

Hoi Joris,

 

Bedankt voor je uitgebreide reactie! Ik begrijp dat ik me eerst maar eens moet verdiepen in macro's.

 

Werk je zelf ook met deze techniek als je net iets meer in filemaker wilt dan alleen maar tekst invoeren? of zijn er nog meerdere technieken?

 

gr. Rigo

  • 0
Posted

Oh ja,

Vergeet ik helemaal... maar hoe zit het met jouw techniek dan met de opmaak? Blijft die wel behouden? Want dat is natuurlijk wel een belangrijke voorwaarde.

 

Gr. Rigo

  • 0
Posted

Hoi Joris,

Ben er nu een paar uurtjes mee aan het stoeien en snap het principe van een macro. Erg leuk en zeer interessant.

 

Hoe start ik nou die macro op vanuit filemaker?

Of doe ik het dan niet goed?

 

gr. Rigo

  • 0
Posted

Je kunt ook een word document exporteren via een XML export.

Je kunt de naam van het document bepalen en deze als een reference in je container hangen. Dan heb je je doel bereikt.

 

Groet,

 

WJ

  • 0
Posted

Dag rigo,

 

je kan (bij mijn weten) niet een bepaalde macro in een office document opstarten vanuit FileMaker. Je kan alleen een document/applicatie openen. Daarom zit er in mijn voorbeeld die Document_Open() macro die bij het openen van het document de andere macro start.

 

Het idee van WJ om via XML-export te werken is zeker niet slecht: dat werkt zelfs met vrij complexe documenten met afbeeldingen en je controleert dan alles vanuit FileMaker.

Je begint best aan die klus door een kant-en klaar Word-document te nemen en daarin de variabele zones duidelijk te markeren (bv. met de tekst FILEMAKER_VELDNAAM of zoiets). Daarna bewaar je het document in XML-formaat. Vervolgens heb je wat kennis van XML nodig om dat document in een XSLT-stylesheet te gieten die de exportvelden van FileMaker op de juiste plaats in het document plakt. Het is niet zo moeilijk te leren als je vertrekt van de voorbeelden op de FileMaker-website.

 

Groetjes,

 

Joris

  • 0
Posted

Hoi WJ en Joris,

 

inmiddels heb ik al veel geprobeerd en redelijk wat documentatie doorgelezen over wat XML inhoudt.

 

WJ, wat bedoel je eigenlijk met het verhaal van in een container hangen met reference?

 

Jammer dat ik geen werkende versies kan vinden op de filemakersite.

Ik heb ze tot nu toe alleen nog maar gezien van 5.0 versies, maar die werken niet. ik probeer natuurlijk net zolang door tot het me allemaal lukt, maar mochten jullie nog een werkbaar voorbeeldje hebben dan zou ik het niet er vinden om die te mogen gebruiken... alvast bedankt!

 

Wat betreft de macro's, daar ben ik nog mee aan het prutsen.

Opzich is dit ook geen slechte oplossing.

 

 

gr. Rigo

  • 0
Posted
WJ, wat bedoel je eigenlijk met het verhaal van in een container hangen met reference?

 

da's net een hete topic hier op dit eigenste forum: http://www.clarify.net/viewtopic.php?p=25759#25759

 

mochten jullie nog een werkbaar voorbeeldje hebben dan zou ik het niet er vinden om die te mogen gebruiken

Hier heb je er een voorbeeld voor een mailing met Word vanuit FileMaker via XML-export. De twee bestanden die je nodig hebt zijn het filemaker bestand en template_transform.xsl De andere bestanden zijn enkel ter illustratie.

Alle credits naar Jeroen :D

 

Groetjes,

Joris

FMP7_XSLT_Toolbox.zip

  • 0
Posted

Bedankt Joris,

 

Dit is even genoeg materiaal waarmee ik goed uit de voeten kan.

Dit werkt ook super zeg!

 

Dit lijkt me veel beter te werken als mergen!

Bij mergen zit SQL ertussen, maar dat is hier niet het geval voor zover ik dat nu zie.

 

Moet je voor dit proces trouwens persee je document geopend hebben?

oftewel kan dit ook in de soort stille modus?

 

Gr. Rigo

 

nogmaals dank!

  • 0
Posted

Ahum, sorry Joris,

 

Ik kwam erachter, dat als ik de laatste scriptregel "sent event", weglaat hij alles in Word zet zonder Word te openen, geweldig!

 

gr. Rigo

  • 0
Posted

Hoi WJ en Joris, bedankt!

 

Dit werkt al wel beter zo zeg... ik heb het zelfs al aan de praat gekregen op de server.

 

Inmiddels heb ik ook op Chapsoft gekeken en een test gedownload.

Ziet er op zich ook niet gek uit. Op een gegeven moment moet ik het programmaatje activeren, maar dat gaat niet, want er is geen .exe in het door mij gedownloade bestand. Begrijp ik dus niet helemaal.

 

Maar Joris, hoe je dat toch doet met je logo is mij nog een raadsel.

Ik bedoel... in je Template_Transform.xsl zie ik de lap code wel, maar hoe krijg je dat er zo in. Heb je dan toch een soort editor als dat van chapsoft nodig of iets anders?

 

Kun je met deze werkwijze ook images vanuit een container invoeren?

 

Ik vindt dit nu al super!

 

bedankt maar weer... gr. Rigo

  • 0
Posted

hoi,

 

die afbeelding stond in het Word-document en is via Save As XML geconverteerd naar die code.

Waarschijnlijk zal je op die manier wel dynamisch afbeeldingen kunnen exporteren uit FileMaker met behulp van de codes. Probeer het eens en laat iets weten :)

 

Groetjes,

Joris

  • 0
Posted
Ik bedoel... in je Template_Transform.xsl zie ik de lap code wel, maar hoe krijg je dat er zo in. Heb je dan toch een soort editor als dat van chapsoft nodig of iets anders?

 

Kun je met deze werkwijze ook images vanuit een container invoeren?

Template_Transform.xsl was inderdaad oorspronkelijk gewoon een Word document, met daarin een afbeelding geplakt. 'Save As XML' gaat de binaire data van de afbeelding omzetten naar karakters ifv een bepaalde xml character set (bv. UTF-8 of ISO-ISO-8859-1). Als de mailing geopend wordt, is Word slim genoeg om via het element deze karakters terug te converteren naar een binaire 'stream' om zo de afbeelding te tonen.

 

Dynamisch container velden exporteren en in je Word-template tonen zal niet lukken vrees ik. Exporteren van containervelden gaat eenvoudigweg niet, en via export Field Contents, creëer je gewoon een afbeelding. Misschien voorziet FileMaker wel in een volgende versie wel een soort van GetBinary functie (of bv. 'binary' parameter in de nieuwe GetLayoutObjectAttribute functie!) die het dan weer wél mogelijk maakt.

  • 0
Posted

Hoi Joris,

 

Het gaat vooruit... met vallen en opstaan.

De documenten die jij mij heb gestuurd heb ik bestudeerd.

 

Ook heb ik EZxslt voor de 1/2 geprobeerd, omdat daar alleen maar een voorbeeld bestand in zonder programma (.exe).

 

In beide situaties kan ik er dus niet achter komen hoe je nou een/het Template_Transform.xsl bestand maakt.

 

Het enige wat ik kan bedenken is n.a.v. de documten die ik van jou heb gekregen je eerst een

 

1. Template.doc maakt

2. deze vervolgens vanuit Word opslaat als een Template.xml

3. het Template.xml dubbelklikken - wordt geopend in browser - van hieruit opslaan als Template_Transform.xsl??

 

nu snap ik nog niet waar je kunt aanduiden waar de veldinhoud moet komen.

 

Kun je me verder helpen?

 

Gr. en alvast bedankt!

Rigo

  • 0
Posted

rigo, EZxslt automatiseert in feite wat met Template_Transform handmatig is gebeurd: het 'wrapt' de Word xml in de nodige XSLT tags om de FileMaker xml output te transformeren naar het resultaat, de mailing.

 

2 oplossingen voor je probleem

1. Verwerf enige kennis over XML en XSLT. Met slechts een matige kennis, kan je al stylesheets zoals Template_Transform maken

2. Schaf een licentie EZxslt aan. Voordeel: je hoeft niets van XSLT te kennen, je maakt gewoon Word documenten en markeert de velden die ingevuld moeten worden. Je haalt het door het EZxslt programmaatje (zit dus niet in demo!) en dat creëert dan voor jou de nodige xslt stylesheet.

  • 0
Posted

Hoi Jeroen,

 

Bedankt voor je info. Duidelijk moet ik dus het container verhaal uit m'n hoofd zetten. Niet erg, daar kan ik best mee leven.

 

Ieder nadeel heeft zijn voordeel en ieder voordeel heeft zijn nadeel.

Zo lijkt het nu.

 

Inmiddels heb ik verschillende technieken geprobeerd om mijn informatie vanuit Filemaker in Word te krijgen. De weken vliegen voorbij!

 

Door mij bekeken en beproefde technieken met voor en nadelen.

 

1. Mergen met *.Mer bestand en VB, nadeel met SQL dat ik iedere keer meldingen krijg en hij Word opent.

2. Macro's met Word, opzich geen slecht idee! Hier copieer ik tekst incl. opmaak en die plaats ik in 1x in Word. Voordeel dus dat je ook je opmaak stijl gewoon in Word plaatst. Nog niet echt nadelen gezien, moet het alleen nog goed aan de praat krijgen. Oh ja, 1 nadeel is dat je toch ziet dat word geopend en gesloten wordt.

3. XML - XSL: Nadeel dat het niet je stijlen invoert, voordeel werkt snel en stil op de achtergrond. Ander GROOT nadeel is je hoe je je template document maakt. Hoe doe je dit??

 

Zucht...

Ik kom hier niet uit!

 

Het mooiste zou zijn als ik mijn info in 1x zonder opstarten en afsluiten van Word in een doc. kan plaatsen zoals XML XSL dit mogelijk maakt.

Daarbij behoud ik graag mijn opmaakstijl en is mijn wens dat het me niet veel tijd kost om een Template te maken.

 

Mocht ik niet onder XML etc uitkomen, waar kan ik er dan meer over leren, zonder dat ik volledige studies hoef te volgen van een week.

 

Alvast bedankt voor jullie moeite.

 

gr. Rigo

  • 0
Posted

Jeroen,

 

Bedankt voor je antwoord en vooral de uitleg dat het programmaatje niet bij het voorbeeld zit!

 

Ik denk dat het de licentie wordt.

Het ontbreekt me nog teveel aan XML kennis inderdaad.

 

Gr. Rigo

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...