Ga naar inhoud

VBA Code voor copy/paste in zelfde document


AWI

Aanbevolen berichten

Ik ben op zoek naar de juiste VBA code om een bepaald deel van de tekst in een Word document te kopiëren en plakken op een andere plek (bijvoorbeeld bij een bookmark) in hetzelfde document. Ik wil hiervoor een commandbutton op het userform gebruiken en het is de bedoeling dat de ge-paste tekst hetzelfde format blijft houden als het origineel geselecteerde stuk tekst. Ook mag het origineel geselecteerde stuk tekst niet verloren gaan. Ik wil graag meerder commandbuttons op hetzelfde userform aanmaken waarmee ik dezelfde copy/paste procedure uit kan voeren voor verschillende stukken tekst die naar verschillende locaties binnen hetzelfde document dienen worden te gekopieerd.

Ben benieuwd of jullie me kunnen helpen?

 

Anton

Link naar reactie
Delen op andere sites

Waarom moeilijk doen, als het ook gemakkelijk kan? Wat jij wil, zit nl. standaard al in Word.

1. Klik in Word boven het lint op "Start".
2. In het lint zie je nu uiterst links de groep "Klembord" staan. Klik rechts van de tekst 'Klembord' op het kleine pijltje dat in een vierkantje staat. Links van je document verschijnt nu een kolom met de inhoud van het klembord. Als je nog geen kopieeropdracht hebt gegeven, is het klembord leeg.
3. Selecteer de eerste tekst die je voor kopiëren (en later plakken) wil vastleggen.
4. Klik 1 x in de groep "Klembord" op het kopieericoon (het icoon boven het borsteltje). De gekopieerde tekst zie je nu links van je document (= in het klembord) verschijnen. Je ziet maar een gedeelte, maar de tekst is echt volledig beschikbaar.
5. Herhaal de punten 3 en 4 voor alle andere teksten die je later voor 'plakken' beschikbaar wil hebben. Al die teksten zie je ook weer in het klembord verschijnen.
6. Om 1 van de teksten in het klembord te plakken, plaats de cursor in het document waar de tekst moet verschijnen, klik in het klembord 1 x op de betreffende tekst (of op het pijltje ernaast dat verschijnt als je de tekst aanwijst).
NB: Als je het document opslaat en je hebt de inhoud van het klembord niet gewist, dan blijven de gekopieerde teksten beschikbaar, niet alleen voor het document waarin je de gekopieerde teksten hebt vastgelegd, maar ook voor alle andere (dus ook nieuwe) Worddocumenten.

Link naar reactie
Delen op andere sites

Hartelijk dank voor dit vlotte en uitgebreide antwoord Alpha, alleen lost dit mijn probleem nog niet helemaal op voor dit moment. Voor mijzelf is het geen probleem om met de klembord functie of quick-parts functie binnen Word te werken, alleen de mensen binnen mijn team presteren het nog steeds om delen van het hoofddocument per ongeluk te veranderen, klembord teksten te verwijderen, quickparts verkeerd aan te klikken. vandaar dat ik heb besloten om middels VBA een userform te programmeren, waarbij de gehele Word applicatie niet eens meer te zien is en waarbij ze dus ook niet meer bij de root-tekst kunnen.

Dit userform zal dus voorzien zijn van een aantal command- buttons, dropdown lijstjes etcetera, waarmee diverse kopieer/plak opdrachten, printopdrachten en dergelijke volledig automatisch 'op de achtergrond' plaatsvinden.

Ik hoop dat mijn oorspronkelijke vraagstelling iets duidelijker is zo en bij voorbaat alvast dank voor een hopelijk weer net zo spoedig en uitgebreid antwoord!

Anton

Link naar reactie
Delen op andere sites

De teksten die je in een document wil laten plaatsen, zijn dat dan een reeks vaststaande teksten waaruit moet worden gekozen? En hoe wil je die dan op de juiste plaats in een document laten plaatsen als men het document niet te zien krijgt?

aangepast door alpha
Link naar reactie
Delen op andere sites

Hartelijk dank voor deze, wederom zeer vlotte reactie Alpha!

Het document bestaat uit meerdere pagina's en zal worden gebruikt voor de administratieve verwerking van medische keuringen. In totaal gaat het om zo'n 20 kleine blokjes tekst, die ieder een onderdeel van de keuring beschrijven (lichamelijk onderzoek, gezichtsveld, audiogram, bloedonderzoek en dergelijke) alleen bestaat niet iedere medische keuring uit dezelfde 'bouwsteentjes'. Uit welke bouwsteentjes een keuring is opgebouwd, wordt aan het begin van het keuringsproces bepaald. In het document bestaan verschillende pagina's (elk met een eigen opmaak). In verschillende documenten dienen alleen de 'bouwsteentjes' te worden geplaatst die daadwerkelijk onderdeel van de keuring zijn (bijvoorbeeld: blokje A, C, F en G).

De verschillende pagina's (die overigens met het Visual Basic Gebruikersformulier apart kunnen worden uitgeprint), komen er dan als volgt uit te zien:

Aanbiedingsbrief: "de keuring zal bestaan uit A, C, F en G".

Uitslagbrief: " er is gekeurd op de volgende onderdelen: A, C, F en G"

Werkbrief: "u dient te keuren op de onderdelen A, C, F en G"

Laboratorium aanvraag: "Graag de volgende bloedwaarden bepalen..."

Enzovoort.

Alle brieven dienen allemaal voorzien te worden van: naam, geboortedatum en dergelijke van de keurling (dit wordt dus 1 keer ingevuld door de assistente in het VBA gebruikersformulier en komt dan automatisch tevoorschijn op de juiste plekken in de verschillende documenten). Deze laatste stap heb ik al succesvol kunnen programmeren (terwijl de Word applicatie volledig op de achtergrond draait en de assistentes alleen het VBA Userform te zien krijgen en kunnen bedienen).

1 Van de pagina's bevat dus de 20 'bouwsteentjes' van waaruit gekopieerd zal moeten worden, zonder dat deze tekst verloren gaat.

Ben zelf autodidact op het gebied van Visual Basic Editor en het lukt me voor Excel doorgaans goed om dit soort dingen te realiseren, maar ik merk dat VBA voor Word toch net iets anders is en ben dus op zoek naar de juiste string aan commando's voor deze 'copy/paste naar een bepaalde locatie binnen hetzelfde document', maar kom er dmv zelfstudie op het internet nog niet goed uit.

Anton

Link naar reactie
Delen op andere sites

Om zoiets te programmeren is het nodig om over het document/de documenten te beschikken waarin de code moet worden gebruikt, zodat te zien is wat er al gemaakt is en hoe het nieuwe er uit moet komen te zien. Maar ik ga daar niet aan beginnen, dat duurt véél langer dan een paar uur (voor mij toch). 
Afgaande op je tekst zijn de documenten bestemd voor een professionele organisatie. Waarom doen jullie geen beroep op een softwarebedrijf dat alles naar jullie wensen kan maken?
 

Link naar reactie
Delen op andere sites

Haha ja dat klopt Alpha, daar ben ik inderdaad meer dan een  paar uur mee bezig geweest! Inderdaad zou ik natuurlijk altijd de hulp van een VBA-pro in kunnen roepen, maar aangezien dit een soort uit de hand gelopen hobby van mij is en het operationeel krijgen van dit document voor ons bedrijf geen grote prioriteit heeft, wil ik toch proberen om dit als hobbyist helemaal zelf voor elkaar te krijgen. Het is ook al helemaal klaar verder (invul-opties, printopties en dergelijke, het op maat gemaakt multi-tab gebruikersformulier) alleen net dat ene stukje 'plakken en knippen binnen hetzelfde document' via een gebruikersformulier, krijg ik nog niet voor elkaar. Het is waarschijnlijk iets wat een ervaren VBA-programmeur zo uit de mouw schudt, maar ik zie dat er hier toch echt een verschilletje bestaat tussen VBA programmeren in Excel of in Word.

Jammer dat jij niet net 'toevallig' deze string al eens had geprogrammeerd, maar nogmaals heel hartelijk dank voor je vlotte reactie iedere keer!

Hartelijke groet vanaf Aruba, Anton

Link naar reactie
Delen op andere sites

  • 4 weken later...

Het blijkt gelukkig toch een stuk eenvoudiger als ik had gedacht!

Met de volgende formule:

Private Sub CommandButton1_Click()
    Dim rngOorsprong As Range
    ActiveDocument.Bookmarks("bmOorsprong").Range.Copy
    Set rngOorsprong = ActiveDocument.Bookmarks("bmBestemming").Range
    rngOorsprong.Paste
werkt het uitstekend!

De te kopiëren tekst selecteren en voorzien van een Bookmark (Bijvoorbeeld: "bmOorsprong"), daarna Bookmark plaatsen op de plek van bestemming (Bijvoorbeeld: "bmBestemming"). De formule verbinden met een commandbutton en klaar is Kees.

Op deze manier kan ik door gebruik van meerdere optionbuttons op het gebruikersformulier, meerdere stukken tekst met 1 druk op de knop kopiëren naar verschillende, vooraf bepaalde, locaties binnen hetzelfde document of exporteren naar andere documenten. Werkt prima!

Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.