Pišem makro, ki naj poišče vse e-maile v dokumentu in jih potem skopira na konec dokumenta. Sem še v fazi iskanja in označevanja le-teh. In tu so nastopile težave!
Prilagam kodo in na povezavi datoteko, kjer sem jo preizkušal. Mogoče jo preiskusite še vi in opazili boste, kaj ne deluje. Meni pa ni jasno. kaj?
Koda: Izberi vse
Function je_odstavek()
Selection.Find.Text = "^p"
Selection.Find.Execute
If Selection.Find.Found Then
je_odstavek = True
Else
je_odstavek = False
End If
End Function
Function je_konec_dokumenta()
'Funkcija vrne vrednost True, če se kurzor nahaja na
'koncu dokumenta.
If Selection.Type = wdSelectionIP And Selection.End = ActiveDocument.Content.End - 1 Then
je_konec_dokumenta = True
Else
je_konec_dokumenta = False
End If
End Function
Sub Poisci_mail_final()
Selection.HomeKey Unit:=wdStory 'Skok na začetek besedila
While Not (je_konec_dokumenta()) 'Zanko ponavljamo, dokler ne pridemo do konca besedila
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend 'Izberemo besedo
niz$ = Trim(Selection.Text) ' Izbiro postavimo v spremenljikov niz$. S funkcijo Trim odrežemo presledke na začetku in koncu
If niz$ = "@" Then
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
While Not (Selection.Text = "<" Or Selection.Text = " ")
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdMove
Wend
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
MsgBox "konec"
' MsgBox Selection.Text
While Not (je_odstavek = True _
Or Right(Selection.Text, 1) = " " _
Or Right(Selection.Text, 1) = ">" _
Or Right(Selection.Text, 1) = "!" _
Or Right(Selection.Text, 1) = "?" _
Or Right(Selection.Text, 1) = ";" _
Or Right(Selection.Text, 1) = ",")
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend 'označimo besedo za @-no
' MsgBox Selection.Text
Wend
niz1$ = Selection.Text
MsgBox niz1$
Else
Selection.MoveRight Unit:=wdWord, Count:=1 'odznačimo besedilo
End If
Wend
End Sub
Še dokument: primer.doc