Toon posts:

[Word 2003] Mergefield leesteken vervangen voor enter

Pagina: 1
Acties:
  • 319 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
In een word template maak ik gebruik van merge fields die gevuld worden vanuit een database. Is het mogelijk om in een bepaald merge field een leesteken (in dit geval een ;) leesteken) te vervangen voor een 'enter'. Nu zijn de waarden van een bepaald veld gescheiden door dit leesteken en ik wil de waarden op aparte regels hebben. Wie weet of dit mogelijk is en zo ja, hoe dan?

Inmiddels ben ik erachter dat wanneer ik gebruik maak van 'find en replace by', dat een leesteken vervangen wordt door een enter met ^l.

Is het mogelijk om dit ook op mergefield niveau toe te passen? Ik maak liever niet gebruik van een macro.

[ Voor 26% gewijzigd door Verwijderd op 22-08-2005 11:24 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Kan je je brondata (uit de database) niet zo aanpassen dat er een enter inzit?

Anders zal het macro-werk worden vrees ik.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Nee, helaas is dat niet mogelijk in dit geval. Ik denk dat het toepassen van een macro op de betreffende cel de enige oplossing is.

Iets anders..is het mogelijk om met fields te rekenen? Ik wil 2 fields van elkaar aftrekken, is dat mogelijk?

  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Ja, dat zou je kunnen doen door 1 field vooraf te laten gaan door een - teken en dan in een tabel zetten. Op de onderste regel maak je dan een veld : =sum(above), in te voegen via de optie formula in het menu table.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Bedankt voor de oplossing! :) Nu werkt de SUM(ABOVE) alleen als ik deze plaats op een regel direcht onder het laatste bedrag. Eigenlijk wil ik dit niet, nu kan ik dit oplossen door niet zichtbare nullen aan te vullen. Maar echt netjes is dit niet, is SUM ook mogelijk zonder die nullen?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ja. Als je in een tabel werkt kun je rij-kolom verwijzingen gebruiken als in Excel; maar ook zonder tabel gaat het prima met bladwijzers. In de word help vind je uitgebreide informatie onder het kopje 'veldcodes: het veld = (formule)' ;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Het vervangen van het leesteken gaat nu goed. Echter, ik heb nog 1 probleem. Ik maak gebruik van merge fields in het document. Het lijkt er op dat de macro wordt uitgevoerd voordat deze velden gevuld zijn. Ik heb dit getest door een aantal ; hard in het template te zetten. In de marcro wordt de AutoOpen() functie gebruikt. Is het mogelijk om de macro uit te voeren nadat de velden zijn gevuld metgegevens uit de database? Is een soort van vertraging in te bouwen? Zoja, hoe dan?

  • sanfranjake
  • Registratie: April 2003
  • Niet online

sanfranjake

Computers can do that?

(overleden)
Over welke versie van Word hebben we het hier?

Mijn spoorwegfotografie
Somda - Voor en door treinenspotters


Verwijderd

Topicstarter
MS Word 2003

Verwijderd

de merge zelf automatiseren (maar ik geloof dat word2003 vervelende onuitschakelbare beveiligingsvensters laat zien). een andere (vergezochte mogelijkheid) is een gebeurtenisklassemodule aanmaken, er zijn onder het applicatieobject een hele hoop merge-events bijgekomen die afgevangen kunnen worden.

Verwijderd

Topicstarter
Dat gaat me wel ver.... zo vele kennis heb ik ook niet ervan. Is er niet een mogelijkheid om een macro na bijv. 5 seconden te starten?

Verwijderd

Visual Basic:
1
2
3
4
5
6
7
8
Private Declare Sub Wachten _
    Lib "kernel32" _
    Alias "Sleep" _
      (ByVal dwMilliseconds As Long)

Sub autoopen()
  Wachten 5000
End Sub

Verwijderd

Topicstarter
hoi,

wat doet Lib "kernel32" _ en Alias "Sleep" _ eigenlijk als ik vragen mag?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

'Sleep' is een routine in 'kernel32', en kernel32 is een routinebibliotheek van windows. Het doet wat je vraagt; 5 seconden wachten.

Ik vind de suggestie _heretic_ mooier: laat de macro aangeroepen worden nadat er een mailmerge heeft plaatsgevonden. Je zult je er even in moeten verdiepen, maar dan heb je ook wat :)

Begin bv hier .

[ Voor 3% gewijzigd door Lustucru op 01-09-2005 10:25 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Verwijderd schreef op donderdag 01 september 2005 @ 09:50:
hoi,

wat doet Lib "kernel32" _ en Alias "Sleep" _ eigenlijk als ik vragen mag?
even ter verduidelijking naast wat Niesje al gezegd heeft, in word bestaat er geen methode om te wachten, itt. tot bv. excel met application.wait, en moet er bijgevolg een in windows zelf ingebouwde routine aangeroepen worden. deze windowsroutines worden in bibliotheken (dll-bestanden) ter beschikking gesteld via de windows API, die nagenoeg voor alle versies van windows hetzelfde is.
zo is er een dll ter beschikking met de routine sleep die doet wat je vroeg.
merk ten slotte op dat het gedeelte van priv .... tem ... as long) slechts 1 statement is dat op 1 lijn had kunnen staan, maar ik heb deze lijn opgesplitst naar 4 lijnen mbv. het zogenaamde line continuation character, dat eigenaardig genoeg eigenlijk uit twee tekens bestaat: een spatie en een underscore.
overigens had je zelf een wachtlus kunnen maken puur in vba door een tellertje te laten lopen en dan trial-and-error-gewijs een waarde te vinden die ongeveer overeenstemt met 5 seconden.

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 31 augustus 2005 @ 19:08:
Visual Basic:
1
2
3
Sub autoopen()
  Wachten 5000
End Sub
Is het de bedoeling dat ik dit stukje toevoeg boven mijn bestaande macro binnen de bestaande Sub autoopen()?

De macro doet namelijk op dit moment niks meer. Ik zie wel dat de er nu inderdaad even gewacht wordt voordat autopen wordt uitgevoerd. Maar mijn initiele macro wordt niet uitgevoerd. Hoe zorg ik daarvoor?

[ Voor 19% gewijzigd door Verwijderd op 01-09-2005 16:59 ]


Verwijderd

op module niveau plaats je het declare sub statement (heb je correct gedaan, want je zegt dat de macro effectief wacht), in de autoopen zet je wachten 5000 boven de rest van je eigen code die al in die sub autoopen stond (je hebt dus slechts 1 sub autoopen). wat geeft dat als je het uitvoert?

Verwijderd

Topicstarter
Ik had even geen tijd om te reageren maar heb het probleem wel opgepakt. De vertraging werkt mooi, echter dit werkt alleen wanneer het document is opgeslagen als .doc. Ik werk met tempate bestanden die zijn opgeslagen .dot. Hier lijkt de teller niet te werken. Kan iemand mij verder helpen? Ik kom er zelf niet meer uit.

Moet ik misschien iets met normal.dot doen? Maar als ik daar iets toevoeg als module dan wil hij dat ook opslaan als normal.dot en dat moet niet. Help me aub!

[ Voor 21% gewijzigd door Verwijderd op 06-09-2005 12:24 ]


Verwijderd

verander "sub autoopen()" in "sub autonew()".

Verwijderd

Topicstarter
-

[ Voor 106% gewijzigd door Verwijderd op 03-11-2005 15:56 . Reden: link vergeten te plaatsen ]

Pagina: 1