Avatar billede macho Praktikant
04. december 2009 - 14:30 Der er 9 kommentarer og
1 løsning

Makro til at finde evt. tekst og stoppe videre kørsel af makro

Word 2003:

Søger hjælp til en makro, der kan søge efter en bestemt tekst, f.eks. "EKSPERTEN", i et word-dokument. HVIS denne bestemte tekst findes i dokumentet skal makroen stoppe med en advarsel om at teksten findes. Hvis teksten derimod IKKE findes i dokumentet, skal der ikke komme en advarsel, men makroen skal køre ufortrødent videre.
Jeg søger altså en "IF" (findes "tekst"?: Advarsel og pop-up) "END IF" stop kørsel af makro.

Kan man dette?
Avatar billede supertekst Ekspert
04. december 2009 - 14:59 #1
Hvad er det præcise problem?

Har du prøvet at indspilleen makro, der søger?
Avatar billede macho Praktikant
05. december 2009 - 12:02 #2
Måske det ikke blev skrevet korrekt. Prøver igen:

Jeg har en makro, som udfører nogle ting, bl.a. indsætter en tabel med en tekst i starten af dokumentet.
MEN hvis to bestemte ord er en del af dokumentet, så skal førnævnte makro IKKE indsætte tabellen i dokumentet. Derimod skal der dukke en advarsel op, som advarer om, at et bestemt ord er en del af dokumentet.

Jeg har ikke noget problem i at indspille en makro, som søger efter et ord, men kan ikke finde ud af at indbygge den med første makro; ej heller kan jeg finde ud af at komme med en advarsel.
Avatar billede supertekst Ekspert
05. december 2009 - 14:45 #3
Du skal være velkommen til at se fil inkl. VBA-kode - så skal jeg prøve at se på det.

Mailadr. under profil.
Avatar billede macho Praktikant
05. december 2009 - 21:35 #4
Hvis du har mulighed for, i første omgang, at hjælpe med vba-koden til at søge efter et bestemt ord og hvis dette ord findes, skal jeg have en advarsel. Kan du hjælpe med det?
Avatar billede supertekst Ekspert
05. december 2009 - 23:36 #5
Ja - det bliver først i morgen..
Avatar billede supertekst Ekspert
06. december 2009 - 12:22 #6
Const stopOrdet = "Eksperten"
Public Sub StartOp()
Rem Gå til start af dokumentet
    Selection.HomeKey Unit:=wdStory

Rem Test om søge findes
    If findesOrdet(stopOrdet) = True Then
        MsgBox ("Stop - ordet " & stopOrdet & " findes!")
    Else
        opbygDokumentet
    End If
End Sub
Private Sub opbygDokumentet()

End Sub
Private Function findesOrdet(søgeOrd)
    Application.Browser.Previous
   
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = søgeOrd
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
   
    If Selection.Find.Execute = True Then
        findesOrdet = True
    Else
        findesOrdet = False
    End If
End Function
Avatar billede macho Praktikant
06. december 2009 - 14:04 #7
Det virker bare perfekt, dog skal jeg lige bytte om på de to første linjer, således, at Const stopOrdet ="Eksperten" bliver flyttet lidt ned.

Kan der evt. søges på to eller tre ord i Const-linjen?
Avatar billede supertekst Ekspert
06. december 2009 - 15:32 #8
Rem Version 2
Public Sub StartOp()
Dim stopOrdsListe As Variant, stopOrd As String
Dim f As Byte, flag As Boolean

    stopOrdsListe = Array("Huper", "Duper", "Ekspert")        'kan udvides efter behov
   
Rem Gå til start af dokumentet
    Selection.HomeKey Unit:=wdStory

Rem Test om søge findes
    flag = False
   
    For f = 0 To UBound(stopOrdsListe)
        stopOrd = stopOrdsListe(f)
        If findesOrdet(stopOrd) = True Then
            flag = True
            Exit For
        End If
    Next f
   
    If flag = True Then
        MsgBox ("Stop - ordet " & stopOrd & " findes!")
    Else
        opbygDokumentet
    End If
End Sub
Private Sub opbygDokumentet()

End Sub
Private Function findesOrdet(søgeOrd)
   
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = søgeOrd
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False                    'False = delvis.. True = hel match
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
   
    If Selection.Find.Execute = True Then
        findesOrdet = True
    Else
        findesOrdet = False
    End If
End Function
Avatar billede macho Praktikant
06. december 2009 - 16:05 #9
Du er skrap - det virker 100% og alt kører som jeg ønsker det :-)

Giv mig et svar, så du kan få dine pts. Tusind tak for hjælpen...
Avatar billede supertekst Ekspert
06. december 2009 - 18:11 #10
Så kan det jo ikke være bedre & selv tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester