Jump to content
  • 0

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


rigo

Question

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.

Link to comment

19 answers to this question

Recommended Posts

  • 0

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

Link to comment
  • 0

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

Link to comment
  • 0

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

Link to comment
  • 0

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

Link to comment
  • 0
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

Link to comment
  • 0

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!

Link to comment
  • 0

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

Link to comment
  • 0
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.

Link to comment
  • 0

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

Link to comment
  • 0

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.

Link to comment
  • 0

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

Link to comment

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...