Kan je geen scriptje schrijven in Visual Basic? Bij een druk op de knop gaat die zoeken naar een deel van een string (SOL*** o.i.d., weet niet precies hoe je op een deel van een string moet zoeken) en als hij deze vind laat je hem het gehele woord selecteren en kopieren. Vervolgens laat je op die plek een hyperlink maken met de waarde die je gecopieerd hebt.
edit:
heb zelf even zitten spelen. met deze code kan ik op een deel van het woord zoeken, dit woord uitbreiden met het volgnummer en dit vervolgens vervangen door een link met dezelfde naam:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Sub test()
'
' test Macro
' Macro opgenomen op 16-06-2009 door Rupie
'
Selection.find.ClearFormatting
With Selection.find
.Text = "SOL*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.copy
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Selection.Range, _
SubAddress:="", ScreenTip:="", TextToDisplay:=Selection.Range
End Sub |
moet je er alleen zelf nog even voor zorgen dat hij linkt naar het goede (ik heb hem nu als link naar een extern document, het zou niet heel moelijk moeten zijn om in te stellen dat het naar een locatie in het document verwijst. Enige nadeel is wel dat als je nu een woord gebruikt waar 'sol' in voorkomt dat hij die ook gaat hyperlinken, wellicht dat je dat even zo moet aanpassen dat hij case sensitive wordt (MatchCase = True zou voldoende moeten zijn), de kans dat je een woord gebruikt waar 'SOL' in voorkomt lijkt mij niet zo heel groot.
nog even de uitleg erbij. dit stukje is voor de daadwerkelijke zoekopdracht:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Selection.find.ClearFormatting
With Selection.find
.Text = "SOL*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute |
wat ik hier doe is dat het ik zoekresultaat 'SOL' verleng met 3 karakters (het volgnummer) om het hele woord te selecteren. Hou er dus rekening mee dat je niet verder kan gaan dan 999

. Vervolgens kopieer ik dat wat ik geselecteerd heb:
code:
1
2
| Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.copy |
tot slot ga ik dat wat ik gekopieerd heb ('SOL' + volgnummer) vervangen door een hyperlink met als 'Address' (dat waar je naar linkt) en als 'TextToDisplay' (de tekst die je ziet in word) dat wat ik gekopieerd heb (Selection.Range):
code:
1
2
| ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Selection.Range, _
SubAddress:="", ScreenTip:="", TextToDisplay:=Selection.Range |
Je zal ook nog even wat moeten bouwen om ervoor te zorgen dat je de macro maar 1x uit hoeft te voeren, met de huidige code moet je hem keer op keer opnieuw uitvoeren.
Ik weet overigens ook niet precies wat hij doet als hij een resultaat tegen komt wat al een link is. Er zijn nog wat haken en ogen dus, maar het begin is er
Edit2:
nu ook iets om ervoor te zorgen dat er geen problemen ontstaan bij een 'SOL' die al een link heeft. Ik zoek op SOL* met als style Hyperlink en wis vervolgens de style. het stuk 'Sub find()' is een nieuwe (2e) macro:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| Sub find()
'
' find2 Macro
' Macro opgenomen op 16-06-2009 door Rupie
'
Selection.find.ClearFormatting
Selection.find.Style = ActiveDocument.Styles("Hyperlink")
With Selection.find
.Text = "SOL*"
.Replacement.Text = "*"
.Forward = True
.Wrap = wdFindAsk
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.find.Execute
End Sub
Sub test()
'
' test Macro
' Macro opgenomen op 16-06-2009 door Rupie
'
Selection.find.ClearFormatting
With Selection.find
.Text = "SOL*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.copy
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Selection.Range, _
SubAddress:="", ScreenTip:="", TextToDisplay:=Selection.Range
End Sub |
Edit3:
de post wordt langer en langer

met name omdat ik zelf net een beetje begin met spelen met Vb

Heb nog een aanpassing gedaan. Heb nu 2 macro's, 1 om bestaande links te updaten (update) en 1 om nieuwe links te maken (check_new). Ik heb een style toegevoegd (Hype1, dikgedrukt en in een bijzonder kleurtje zodat het een unieke style is). als je een nieuwe link maakt moet je het woord (SOL001 bv) die style geven. Op het moment dat je check_new draait zoekt hij naar die style, in combinatie met 'SOL' en gaat die vervangen door een hyperlink. Op het moment dat je update gaat draaien gaat hij opzoek naar woorden die beginnen met SOL in de style Hyperlink en gaat die updaten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| Sub update()
'
' test Macro
' Macro opgenomen op 16-06-2009 door Rupie
'
Selection.find.ClearFormatting
Selection.find.Style = ActiveDocument.Styles("Hyperlink")
With Selection.find
.Text = "SOL*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.Range.Hyperlinks(1).Delete
Selection.find.ClearFormatting
With Selection.find
.Text = "SOL"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.copy
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Selection.Range, _
SubAddress:="", ScreenTip:="", TextToDisplay:=Selection.Range
End Sub
Sub check_new()
'
' check_new Macro
' Macro gemaakt op 16-06-2009 door Rupie
'
Selection.find.ClearFormatting
Selection.find.Style = ActiveDocument.Styles("Hype1")
Selection.find.Replacement.ClearFormatting
Selection.find.Replacement.Style = ActiveDocument.Styles("Hyperlink")
With Selection.find
.Text = "SOL*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.Font.bold = wdToggle
Selection.copy
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Selection.Range, _
SubAddress:="", ScreenTip:="", TextToDisplay:=Selection.Range
End Sub |
[
Voor 149% gewijzigd door
Rupie op 16-06-2009 12:09
]