Hoe bepaal ik waar de tekst begint?

Status
Niet open voor verdere reacties.

BasHD

Gebruiker
Lid geworden
2 dec 2008
Berichten
99
Hallo bekijker van mijn vraag:

Het volgende is mijn probleem:

Ik heb een zin in een Word document. In die zin staat een naam.
Het begin van die naam kan ik als volgt opzoeken:

Code:
Selection.HomeKey Unit:=wdLine
           Selection.MoveRight Unit:=wdCharacter, Count:=40

Na de naam komt nog een stukje tekst. Die tekst is altijd hetzelfde maar die wil ik op een bepaalde manier neerzetten. Dat lukt me met de volgende code

vervolg VBA
Code:
Selection.TypeText Text:=vbTab
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdCharacter, Count:=15
    Selection.TypeBackspace
    Selection.MoveLeft Unit:=wdCharacter, Count:=15
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdCharacter, Count:=15
    Selection.TypeText Text:="      "

Probleem is dat naam ook korter kan zijn. Dan moet het

Code:
Selection.TypeText Text:=[B]vbTab & vbTab[/B]
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdCharacter, Count:=15
    Selection.TypeBackspace
    Selection.MoveLeft Unit:=wdCharacter, Count:=15
    Selection.TypeText Text:=vbTab
    Selection.MoveRight Unit:=wdCharacter, Count:=15
    Selection.TypeText Text:="      "

worden.

Is er iets met selection.find of i.d. waardoor ik de vaste tekst in de zin na de naam [Gemiddeld] kan opzoeken en op basis van de positie in de zin de VBA de keuze kan geven of hij een lus voor een korte of lange naam ingaat?

Groet,

BB
 
Blijkbaar heb je geen tabs ingesteld, anders zou je het probleem niet hebben dat er soms twee keer op TAB moet worden gedrukt. Ik zou dat dus eerst doen; als je met vaste tekst werkt, die blijkbaar dus ook op vaste posities staat, dan lijkt mij dat de meest logische oplossing.
 
Kun je aangeven wat je met Tab instellingen bedoeld? Doe je dat in de VBA of doe je dat boven in de lineaal in je word document?
Heb nog vrij weinig ervaring met word dan alleen typen van tekst.
 
Tabs instellen doe je in beginsel gewoon via de liniaal; het kan wel via VBA, maar waarom zou je dat doen? Dus fijn met de liniaal! En als je Regeleindes gebruikt (Shift>+<Enter> i.p.v. <Enter> staan ze gelijk voor de hele alinea goed...
 
Als ik de tabs instel krijg ik weer andere problemen. Basis van de bladzijde in Word vormt een rapport uit Access. Dit rapport heeft een bepaalde kolom indeling.

In eerste instantie staan de tabs goed. Alles is geprogrammeerd in Office 2000.

Nu met Word 2010 moet er boven aan de pagina 1 witregel worden weggehaald.

Dat loopt goed. Alleen als ik die wit regel weghaal dan lopen de tabs in de kop verkeerd. Pas ik die tabs aan dan kloppen de kolommen vanuit de rapport indeling weer niet.

Ik wil dus alleen 1 regel benaderen en niet de rest van het document.

Kolomkoppen beginnen niet allemaal op dezelfde positie als de kolommen vanuit het rapport.

gr

BB
 
oplossing lijkt grvonden

Code:
 Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.EndKey Unit:=wdLine
    pos = Selection.HomeKey(Unit:=wdLine, Extend:=wdMove)
        If pos > -92 Then
        
        Selection.MoveRight Unit:=wdCharacter, Count:=40
        Selection.TypeText Text:=vbTab & vbTab
        Selection.EndKey Unit:=wdLine
        Selection.MoveLeft Unit:=wdCharacter, Count:=15
        Selection.TypeBackspace
        Selection.MoveLeft Unit:=wdCharacter, Count:=15
        Selection.TypeText Text:=vbTab
        Selection.MoveRight Unit:=wdCharacter, Count:=15
        Selection.TypeText Text:="      "
    Else
    
        Selection.MoveRight Unit:=wdCharacter, Count:=40
        Selection.TypeText Text:=vbTab
        Selection.EndKey Unit:=wdLine
        Selection.MoveLeft Unit:=wdCharacter, Count:=15
        Selection.TypeBackspace
        Selection.MoveLeft Unit:=wdCharacter, Count:=15
        Selection.TypeText Text:=vbTab
        Selection.MoveRight Unit:=wdCharacter, Count:=15
        Selection.TypeText Text:="      "
    
    End If

Lijkt goed ter werken
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan