VBA: tekst in Word copieëren.

Status
Niet open voor verdere reacties.

watrex

Gebruiker
Lid geworden
23 jan 2007
Berichten
16
Ik zou een bepaalde tekst moeten copieëren in een Word doc en het plakken
in een ander document. In het eerste doc doe ik een select all en een copy.
Het pasten lukt wel voor in het tweede doc maar ..
Ik zou dat op een bepaalde plaats kunnen doen dmv een bookmark of door find and replace.
Bij deze laatste kan ik de waarde van de copy niet in een variabele zetten.

wrdDoc.ActiveWindow.Selection.WholeStory 'alles selecteren
wrdDoc.ActiveWindow.Selection.Copy


'Dan de find and replace ...

wrdDoc.ActiveWindow.Selection.Find.text = "zoek"
wrdDoc.ActiveWindow.Selection.Find.Replacement = "vervangen door copy"
wrdDoc1.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll



--> maar ik kan van die copy geen string maken, ook niet met Cstr(""),
dan geeft die telkens een fout op de Copy zelf.
Wat is dan eigenlijk de return waarde van die Copy?

Thx.
 
> VBA: tekst in Word copieëren.

Dag watrex,

Dim s As String

Selection.WholeStory
s = Selection.Text

With Selection.Find
.Text = te vervangen tekst
.Replacement.Text = s
.Execute Replace:=wdReplaceOne
End With

Succes,

Axel

Overigens kan je van een Copy ook een string maken, maar dit is simpeler.
 
Ja, het werkt perfect. Enkel dat de opmaak nu verdwijnt tov een copy en paste.

Een find houdt blijkbaar geen rekening met de opmaak. Nu weet ik niet of dat enigzins nog kan aangepast worden.

Bij de Selection.Find. heb ik de Format al op true, maar dat dient daar precies niet voor.

With Selection.Find
.Text = te vervangen tekst
.Format = True
.Replacement.Text = s
.Execute Replace:=wdReplaceOne
End With

Enig idee hoe ik die opmaak dan kan behouden?

Thx.
 
Dag watrex,

De opmaak verdwijnt met het toekennen van de geselecteerde tekst aan s. Als je de opmaak wilt meenemen zul je toch Copy en Paste moeten gebruiken.

Vertel nog eens precies wat de bedoeling is compleet met de twee documenten die je wilt bewerken. Dan denk ik er nog eens over na.

Axel.
 
Axel,

Hetgeen ik moet doen is bepaalde tekstblokken in een Wordtemplate voegen.
Die tekstblokken staan ook allemaal in Word documenten.

Hetgeen al lukte was dat ik zo een doc open en alles daarvan plak in die template. Met behoud van opmaak.
Maar wat ik niet kon bepalen was waar dat die tekst terecht ging komen. Bvb in het midden van de pagina.
Met volgende regels lukte het dus niet:

wrdDoc1.ActiveWindow.Selection.MoveDown Unit:=wdLine, Count:=10

Eerst wou ik werken met bookmarks (wat ik nog niet geprobeerd heb). Een find and replace is opzich wel hetzelfde en werkt nu dus wel, enkel dat de opmaak van die bestaande tekstblokken niet overgenomen wordt.

Wat ik ook gezien heb op de site van msdn (http://msdn2.microsoft.com/en-us/library/6b9478cs(VS.80).aspx) is een Word.Range waar je dan kan werken met een InsertAfter. Zie ook (http://support.microsoft.com/kb/212682). Maar dat moet ik nog bekijken.
Maar hier

Sub InsertAfterMethod()
Dim MyText As String
Dim MyRange As Object
Set MyRange = ActiveDocument.Range
MyText = "<Replace this with your text>"
' Selection Example:
Selection.InsertAfter (MyText)
' Range Example:
' (Inserts text at the current position of the insertion point.)
MyRange.Collapse
MyRange.InsertAfter (MyText)
End Sub

voegen ze dan tekst in na MyText bvb.
Maar dat is dan weer een woord dat reeds in het document staat, ik zou het best moeten kunnen pasten op basis van een bepaald coördinaat.
Dan is eigenlijk alles opgelost.

Bedankt .
 
Axel,

stom van mij. Die regel:

wrdDoc1.ActiveWindow.Selection.MoveDown Unit:=wdLine, Count:=30 '

werkt dus blijkbaar toch, je moet gewoon al een paar keer enteren zodat er lijnen 'gebruikt' worden. Bij een lege en nog niet gebruikte pagina werkt het dus niet.

Ik wist wel dat het eenvoudig was. Alleszins al bedankt.
 
Dag watrex,

Zoals zo vaak zijn hier meerdere mogelijkheden. Een daarvan vind je als bijlage.

Zet bijgevoegde documenten in C:\.
Open Macrodocument.doc
Klik op Document om tekst van te kopiëren in de taakbalk
Ga terug naar Macrodocument en klik op Tekst kopiëren.
Bekijk het resultaat in Sjabloon om tekst naar te kopiëren.

Succes,

Axel.
 

Bijlagen

Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan