deel van woord

Status
Niet open voor verdere reacties.

wilbert1967

Gebruiker
Lid geworden
19 jun 2004
Berichten
629
hallo

ik wil een {docproperty "veld7" } plaatsen in een document maar alleen de laatste 3 karakters mogen niet getoond worden.

in excel zou ik dan links of left gebruiken maar hoe doe ik dat in Word?

mvg
wilbert
 
Niets kunnen vinden dat er op lijkt... Waar komt de docproperty vandaan? Kan die niet gesplitst worden in twee docproperties, een voor het te tonen linker deel en een voor de drie-letter-code? die je niet wilt laten zien?:confused:
 
hoi

docproperty is van Word en veld7 is 1 van de tig velden uit een gegevens bestand.
hoe zou ik het kunnen splitsen is de vraag?
 
Ik heb diverse testen uitgevoerd.
Ook gekeken naar de funkties die gebruikt kunnen worden als formule in een tabel.
De funktie Left of Links zit er niet bij.
{=Left({docproperty "naam"},3)} werkt bij in ieder geval niet.
Ik denk dat je een list moet verzinnen.

Dit kan er een zijn:

Code:
Sub tsts()
  ActiveDocument.CustomDocumentProperties.Add "voorbeeld", False, msoPropertyTypeString, Left(ActiveDocument.Name, 3)
End Sub

Met in de document { Docproperty voorbeeld } heb je het gewenste resultaat.

Eenvoudiger is natuurlijk:

Code:
Sub rtst20()
   Activedocument.variables("exempel").value= left(activedocument.buitindocumentproperties(7),3)
End sub

Met in het Document { DOCVARIABLE exempel } heb je ook het gewenste resultaat.
 
Laatst bewerkt:
Code:
Sub deel()
'
' deel Macro
' Macro opgenomen op 9-9-2009 door Wilbert Mathijssen
'
    Dim teller As Integer
    Dim lengte As Integer
    Dim adres As String
    Dim karakter As String
   
          
    teller = 0
    Set myfield = ActiveDocument.Fields.Add(Range:=Selection.Range, _
       Type:=wdFieldEmpty, Text:="DOCPROPERTY  ""Veld7"" ", PreserveFormatting:=True)
    tekst = myfield.Result.Text
    karakter = Right(tekst, 1)
    lengte = Len(tekst)
    While karakter <> " "
      teller = teller + 1
      karakter = Right(Left(tekst, lengte - teller), 1)
    Wend
    adres = Left(myfield.Result.Text, (Len(myfield.Result.Text) - teller))
        
    ActiveDocument.Variables("adres_zonder_hr").Value = adres
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
        "DOCVARIABLE adres_zonder_hr", PreserveFormatting:=True
        
End Sub

hallo

dit werkt maar ik zie nu in het document eerst de inhoud het veld7 en dan de inhoud van adres_zonder_hr
de eerste wil ik niet zien hoe los ik dat op?

mvg wilbert
 
1. waar komt dat adres (straat + nr ) vandaan ?
2. splitsen op straat en huisnummer kan minder omslachtig

stel

Code:
c0= "2e Jan Steenstraat 94"
sq=split(c0)
Activedocument.variables("straat")=replace(c0," " & sq(ubound(sq)),"")
Activedocument.variables("huisnummer")=sq(ubound(sq))

of
Code:
c0= "Jkhr. mr. Van der Duijn van Maasdamkade 127 hs"
sq=split(c0)
c1=" " & iif(val(sq(ubound(sq)))=0,sq(ubound(sq)-1;"") & sq(ubound(sq))
Activedocument.variables("straat")=replace(c0,c1,"")
Activedocument.variables("huisnummer")=c1

PS verwijder de regel Option Explicit voordat je deze code draait.
PPS Het gaat natuurlijk niet over een deel van een woord, maar van een zin.
 
Laatst bewerkt:
1. waar komt dat adres (straat + nr ) vandaan ?
2. splitsen op straat en huisnummer kan minder omslachtig

...

PS verwijder de regel Option Explicit voordat je deze code draait.
PPS Het gaat natuurlijk niet over een deel van een woord, maar van een zin.

Dat bedoelde ik ook al te vragen, waar komt de veldinhoud vandaan?
Als dat bijvoorbeeld een database is dan is het wellicht zinniger of gemakkelijker om het probleem bij de bron op te lossen on plaats van je in allerlei bochten te moeten wringen om het bij het gebruik van de gegevens. Bijvoorbeeld met een view.
Hetzelfde zie je nog al eens bij postcode woonplaats in een veld. Leuk voor gebruik een adres, maar als je de woonplaats een keer apart nodig hebt, heb je een probleem. Met name als het internationale adresgegevens betreft met soms de postcode achter de straat en soms er voor. Dat laatste geldt trouwens ook voor huisnummers.
 
hallo

de aanleveren van de gegevens gebeurt met een informatiesysteem door een output bestand dat gegenereerd wordt. Hierin staan een tig-aantal velden en in veld7 staat adres met huisnummer.

mvg wilbert
 
hallo

de aanleveren van de gegevens gebeurt met een informatiesysteem door een output bestand dat gegenereerd wordt. Hierin staan een tig-aantal velden en in veld7 staat adres met huisnummer.

mvg wilbert

En... in de database staan die gegevens ook in een veld en niet gescheiden? Anders een ander output bestand laten genereren. Bij ons heeft het output bestand voor mailmerge diverse duplicaatvelden. Dus ten eerste de basisgegevens (straat en huisnummer apart) maar ook gecombineerd voor gebruik in het adresvenster. Idem de naam van de contactpersoon en zijn geslacht apart, maar ook gecombineerd tot een veld dat je direct voor "ter attentie van" kan gebruiken.

Alternatief (als je niets aan de output kan (laten) verbeteren) is het outputbestand eerst in Excel inlezen en zelf naar wens kolommen toevoegen op basis van de ingelezen kolommen, en dan het Excel workbook gebuiken om te koppelen aan Word.
 
@Rutger

Met de suggesties die ik heb gegeven is de Excel-omweg niet nodig.
 
@snb
Zeker, als het om een (1) document gaat, maar als het om een mailmerge gaat zou je de code per document moeten draaien en dan leek mij het handiger om direct de juiste gegevens beschikbaar te hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan