Word 2016. VBA code wordt niet uitgevoerd iin document.

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo. Ik heb VBA code geschreven in een Word sjabloon en het document opgeslagen als .dotm. Via Bestand-Opties-Geavanceerd-Algemeen heb ik in Werkgroepsjablonen het pad opgegeven waar het sjabloon op de pc is opgeslagen. Als ik in Word het sjabloon gebruik, dan wordt het document als .doc geopend en wordt de VBA code niet uitgevoerd. Het .doc document beschikt niet over de code. In de projectverkenner wordt het .doc document en het .dotm document weergegeven en heeft het doc document geen VBA code.
Als ik het .dotm document als gewoon document in Word open, dan wordt de code uitgevoerd.

Hoe kan ik het sjabloon in Word 2016 gebruiken en zodanig dat de VBA code wordt uitgevoerd?
 
Een sjabloon maakt ALTIJD een .doc bestand aan, dat is ook de bedoeling van de sjabloon: dat is niet meer dan een blauwdruk om een document te maken. Dus dat doe je helemaal goed. In die sjabloon zet je dan alles wat je geautomatiseerd in het nieuwe document wilt hebben. Dat is dus de vaste tekst, de standaard opmaak van het document etc. Macro’s in de sjabloon worden dus niet overgezet naar dat nieuwe document, en dat hoeft natuurlijk ook niet, want die zitten al in de sjabloon. En de sjabloon is gekopppeld aan het document.

Het probleem ligt dus niet zozeer aan de sjabloon of aan het nieuwe document, maar aan de manier waarop je de sjabloon gebruikt. Die is denk ik verkeerd. Maar daarvoor zou ik de sjabloon dus moeten zien. Al heb ik wel een vermoeden natuurlijk.
 
Dank Octafish. Ik begrijp de functie van het sjabloon en dat deze resulteert in een .doc document. Maar mijn bedoeling is om de sjabloon voor dit zelfde doel te gebruiken maar dat de code ook meegaat naar het doc document en ik dus de in VBA ontwikkelde invulvensters etc. kan gebruiken. Maar hoe?

Ik heb code in het sjabloon gezet en kan deze in de functie van sjabloon nu niet gebruiken. Het enige wat ik nu kan doen is de sjabloon niet in de functie van sjabloon te gebruiken maar gewoon in Word te openen en dan wel de "VBA"invulvensters etc. te gebruiken. Ik gebruik in de sjabloon bladwijzers etc. en vrees dat, als ik het document niet als sjabloon gebruik mar als normaal doc document, de gebruiker het sjabloon met de bladwijzers ongewenst kan "beschadigen" met alle gevolgen van dien. Een Word document met een sjabloon geopend kan het sjabloon niet beschadigen. Ik kan mij niet voorstellen dat op eea. manier niet mogelijk is.
 
Je begrijpt volgens mij nog steeds de functie van een sjabloon niet: dat is bedoeld om een nieuw document te maken, eventueel de gebruiker te begeleiden bij het invullen ervan middels formulieren (waarvan de code in de sjabloon zit) en vervolgens het eindresultaat, het .doc bestand, op te slaan. Daarna is het aan de gebruiker om het document verder te beheren/bewerken. Doorgaans zijn daar geen macro’s voor nodig, omdat alles al in het document is gezet op de door de sjabloon afgedwongen manier. Dus ik zie het probleem niet.
 
Na > 20 jaar gebruik van Word begrijp ik wel wat de functie van een sjabloon is. Wat echter voor mij nieuw is, is het gebruik van VBA in Word. Ik wil grote hoeveelheden rapporten als formulier zodanig uitvoeren dat deze gemakkelijk, met één druk op de knop (herhaald) zijn in te vullen, op te slaan (als pdf en docx), tekst te vernieuwen en te e-mailen. Hiervoor heb ik in het formulier met bladwijzers (Bookmarks) en VBA een paar knoppen geprogrammeerd. Ik heb de VBA toegevoegd aan het sjabloon in de veronderstelling dat bij het openen van het Word document (op basis van het sjabloon, Nieuw-keuze sjabloon, etc.) geen veranderingen aan het oorspronkelijke document (sjabloon) kan worden gedaan en men met behulp van de geprogrammeerde knoppen alleen de velden van het formulier kan invullen.

Ik begrijp dat mijn denkwijze niet klopt en het niet zal lukken. Waarom niet? Het sjabloon voert toch de VBA code uit, of niet? Het is dus alleen mogelijk als ik steeds gebruik maak van het (kwetsbare) docx document met de VBA knoppen?
 
Ik ken meer mensen die al 20 jaar met Word werken, en toch de ballen snappen van sjablonen, dus ik sta nergens meer van te kijken :).
... in de veronderstelling dat bij het openen van het Word document (op basis van het sjabloon, Nieuw-keuze sjabloon, etc.) geen veranderingen aan het oorspronkelijke document (sjabloon) kan worden gedaan ...
Ik begrijp dat mijn denkwijze niet klopt en het niet zal lukken. Waarom niet? Het sjabloon voert toch de VBA code uit, of niet? Het is dus alleen mogelijk als ik steeds gebruik maak van het (kwetsbare) docx document met de VBA knoppen?
Hieruit blijkt bijvoorbeeld (wederom ;) ) dat je niet volledig snapt wat sjablonen nu precies zijn en doen. Een sjabloon is een blauwdruk die je gebruikt om een nieuw document te maken. Je opent de sjabloon dus nooit.
Maar volgens mij heb je dát eigenlijk wel door, want je beschrijft de procedure daarna wél goed.

Als je een sjabloon maakt, met daarin macro's en formulieren, dan maak je dus een nieuw document aan, waarbij je uit de lijst met beschikbare sjabonen de juiste sjabloon kiest. Het resultaat is dan een .doc(x) bestand dat is gekoppeld aan de sjabloon. Als je de gemaakte documenten (.doc) daarna opent, heb je de complete functionaliteit van de onderliggende sjabloon gewoon tot je beschikking. Ik maak regelmatig sjablonen op deze manier, en die doen het allemaal prima. Dus waarom het bij jou niet werkt, is mij eerlijk gezegd een raadsel. Je kan heel simpel checken of de sjabloon (en het document) goed werkt door een document te maken op basis van de sjabloon, dat document vervolgens op te slaan (als .docx), te sluiten en daarna te openen. Als je verder geen documenten open had staan op dat moment, heb je dus maar één document geopend, het document op basis van de sjabloon.

Als je dan naar <Sjablonen en invoegtoepassingen> gaat (knop <Documentsjabloon> op het tabblad <Ontwikkelaars>) zie je de gekoppelde sjaboon staan in het veld Documentsjabloon. Dan staat daar iets als: "H:\Werkgroepsjablonen\Aanvraagformulier Handhaving v1.dotm". Als je naar de VBA editor gaat, moet je op zijn minst 2 projecten zien: het project van het document, en het project van de sjabloon. Het document bevat geen code, maar in Verwijzingen moet je een verwijzing zien naar de onderliggende sjabloon (in mijn voorbeeld: Aanvraagformulier Handhaving v1.dotm).
En op dat moment weet je dus dat alles helemaal in orde is. Voor jezelf zal dit allemaal perfect werken; je hebt immers zelf de sjabloon opgeslagen in de map waar jij bij kan. Voor een andere gebruiker is dat niet gelijk logisch; die moet op zijn minst bij de map kunnen waar de sjabloon staat. In mijn voorbeeld kan ik deze sjabloon wel verspreiden, maar kan niemand anders ermee werken, omdat ik de werkgroepsjabloon op een lokale map heb gezet, en niet op een algemene map. Maar dit was ook maar om te testen :).
 
Dank voor trouwe beantwoording van alle vragen. Ik heb er altijd veel aan, welke tot mooie resultaten hebben geleid!. Ik heb je uitvoerige uitleg begrepen en ga er mee aan de slag. Ik heb nog wel een uitdaging in de uitvoering. Het document moet op een school worden geïnstalleerd (document is voor het genereren van rapporten) en daar kun je vaak niet bij alle mappen en vaak afgeschermd. Dus, kun je thuis alles voor elkaar hebben maar elders tegen drempels aanlopen, volgende uitdaging.

Ik heb nog een vraag open staan met een netelige kwestie (Foutcode 2147352567 U kunt geen waarde aan dit object toekennen, van KPTPTT). Het is een complex probleem voor een zeer belangrijk onderdeel van mijn applicatie. Zou je svp. hier weer eens naar willen kijken. Alvast bedankt.
 
Heb je daar een andere vraag voor uitstaan? Ik zoek 'm wel even op. Wat betreft deze vraag: heb je nog gecheckt of je inderdaad de gekoppelde sjabloon ziet staan als je het document dat is gemaakt hebt geopend? Op die school moet de sjabloon op een plek staan waar iedereen op zijn minst leesrechten heeft. Dat zou genoeg moeten zijn.
 
Ja, dat is gelukt. Op de school ben ik benieuwd wat ik tegenkom en zal dan wat moeten improviseren in een zeer korte gelegenheid. Dank.
Voor mijn vraag heb ik pas nog opnieuw een oproep gedaan, dus hij staat redelijk weer bovenaan. Het is vooral de reactie van errormelding Hell als geen bestand wordt gevonden. Ik wil eigenlijk een andere oplossing dan de errormelding. De code is destijds door je geleverd via mail en werkt op zich goed behalve na het kopiëren van het ebstand en het plaatsen in de map dat dan de error gemeld wordt dat de code niet is gevonden terwijl deze net is gekopieerd.
 
Ik heb een antwoord in de andere vraag gezet. Zou het probleem wel eens op kunnen lossen!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan