Avatar billede bearhugx Nybegynder
09. december 2002 - 13:31 Der er 1 løsning

Word 97/VBA - Tekstsøgning i sidehoved

Hejsa eksperter...

Jeg har følgende kode -

mit mål er at finde alle forekomster af en String (search) (i selve brødteksten _OG_ i sidehovedet) og erstatte den med en anden String (replace)

I øjeblikket kan jeg godt finde forekomster i brødteksten (doc.Range.Find) - men jeg kan ikke finde forekomster i sidehovedet -- hvordan gør jeg det ?????

KODE
------------
Private Sub cmdGo_Click()
    Dim files
    Dim rngRange As Range
    Dim srcDir As String
    Dim search As String
    Dim replace As String
    Dim doc As Word.Document
   
    ' initialisér fra GUI
    srcDir = txtDirectory.Text
    search = txtSearchFor.Text
    replace = txtReplaceWith.Text

    ' find første fil i dir
    file = Dir(srcDir, vbNormal)
   
    ' sålænge der er filer
    Do Until file = ""
       
        'åbn dokumentet
        Set doc = Documents.Open(txtDirectory.Text + file)
       
        'søg efter {search} i brødteksten
        With doc.Range.Find
            ' hmmm hvad gør ClearFormating ???
            .ClearFormatting
            If .Execute(FindText:=search) Then
                ' DEBUG : udskriv at tekst er fundet (Klartekst)
                lstChanged.AddItem ("found CLEARTEXT '" + search + "' in " + file)
            End If
        End With
       
        ' søg efter {search} i sidehovedet
        ' DETTE VIRKER IKKE
        ' struktur som ovenstående...
        With doc.Sections.First.Headers(1).Range.Find
            .ClearFormatting
            If .Execute(FindText:="search") Then
                lstChanged.AddItem ("found HEADER '" + search + "' in " + file)
            End If
        End With
       
        ' luk dokument igen
        doc.Close
       
        ' hent næste fil
        file = Dir()
    Loop
End Sub
------------

Hvis der er en nemmere måde at lave search/replace på i et dokument (f.eks. uden at skulle åbne dokumentet) så er jeg også meget interreseret..

/Søren
Avatar billede bearhugx Nybegynder
09. december 2002 - 14:21 #1
Hvad der hører til sjældenthederne er, at jeg løser mine egne spm - men her fandt jeg en tålbar måde at gøre det på

KODE
----------
Private Sub cmdGo_Click()
    Dim files
    Dim rngRange As Range
    Dim srcDir As String
    Dim search As String
    Dim replace As String
    Dim doc As Word.Document
   
    ' initialisér fra GUI
    srcDir = txtDirectory.Text
    search = txtSearchFor.Text
    replace = txtReplaceWith.Text

    ' find første fil i dir
    file = Dir(srcDir, vbNormal)
   
    ' sålænge der er filer
    Do Until file = ""
       
        'åbn dokumentet
        Set doc = Documents.Open(txtDirectory.Text + file)
       
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = search
            .Replacement.Text = replace
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute replace:=wdReplaceAll
       
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = search
            .Replacement.Text = replace
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute replace:=wdReplaceAll
     
        ' luk dokument igen
        doc.Save
        doc.Close
       
        lstChanged.AddItem (file)
       
        ' hent næste fil
        file = Dir()
    Loop
End Sub
----------
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
Kurser inden for grundlæggende programmering

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