Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[VBA][WORD] Importeren userform & sjabloon in .doc

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wij werken hier met Navision en ik ben een nieuw offerte-format aan het samenstellen in een template in Word. (.dot)

Omdat Navision word-documenten aanmaakt (willekeurig cijfer onder een bepaald relatienummer) zit je altijd met een leeg .doc bestand. Hier importeren we vervolgens het template in als bestand (invoegen > bestand de .dot) en vervolgens worden met behulp van de data merge fields de gegevens van een relatie uit het systeem getrokken.

Nu wil ik ook d.m.v. een userform een gebruiker de mogelijkheid geven aanvullende gegevens in die offerte toe te voegen, waardoor door het aanvinken van opties in het userform ook hele lappen tekst kunnen worden toegevoegd.

Dit werkt allemaal prima als ik de .dot vanuit Word open of als ik een nieuw document aanmaak door er vanuit verkenner op te klikken, want de userform komt dan tevoorschijn:


ThisDocument:

Private Sub Document_open()
Sales.Show
End Sub

Nu is het probleem dat als je de .dot importeert als bestand in een lege .doc je wel de hele template te zien krijgt inclusief data merge fields, maar de userform (oftewel de VB script) blijft weg.

Nu ben ik dus eigenlijk op zoek naar een manier waarmee zowel de sjabloon (.dot) als de userform mee geimporteerd als de .dot wordt ingevoegd als bestand in een door Navision aangemaakte .doc
Heeft iemand van jullie een idee of dit uberhaupt mogelijk is? Zou ik dit met code moeten kunnen bewerkstelligen?

[ Voor 3% gewijzigd door Verwijderd op 19-01-2010 15:21 ]


Verwijderd

ja dat is mogelijk maar niet zoals jij het voor ogen hebt, het is namelijk een stuk complexer vrees ik.

wat je zal moeten doen is een algemeen EenDocument_open gebeurtenisafhandelaar schrijven in een klasse module die zich in een een algemene invoegtoepassing (global addin) of in de algemene sjabloon (normal.dot) bevindt.
deze code wordt dan voor elk document getriggerd, waarbij je dus extra voorwaarden zal moeten schrijven om automatisch te bepalen of het effectief om een navisiondocument gaat, waarna je de userformcode kan aanroepen die bij voorkeur ook in de invoegtoepassing geplaatst wordt (ipv momenteel de losse .dot).

zie Take Control of Microsoft Word Through Events en Writing application event procedures?

Verwijderd

Topicstarter
Ik weet niet of dit gaat werken. Het hele probleem is namelijk dat als je een .dot als bestand invoegt in een .doc, Word nooit VBA script lijkt te lezen. Dan werken event procedures en event handlers toch ook niet? Dan ben je toch tenslotte ook al een script aan het schrijven in VB of zie ik dat verkeerd?

De makkelijkste oplossing is om Navision iedere keer de .dot aan te laten roepen zodat de userform automatisch wordt aangeroepen. De vraag is alleen of Navision zo flexibel is.

[ Voor 31% gewijzigd door Verwijderd op 19-01-2010 17:06 ]


Verwijderd

toch wel, er wordt helemaal geen dot-bestand meer ingevoegd. als je de code hebt volgens m'n post hierboven, gaat het zo :
- er wordt een navisiondocument geopend.
- de gebeurtenisklassemodule (bv. in normal.dot) herkent het document als zodanig.
- bovenstaande module roept de userform (ook in normal.dot) aan.

om het volledig duidelijk te maken : de code waarnaar ik verwijs in m'n eerste post wordt sowieso voor alle geopende documenten getriggerd, kunst is dan van er voorwaarden aan toe te voegen die zorgen dat de userform alleen opgeroepen wordt als het effectief om een (nog niet aangepast) navisiondocument gaat.

Verwijderd

Topicstarter
ah ok. Ik zal me hier toch eens wat verder in verdiepen dan. Thx! ;)