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

Batch-"søg og erstat" af word 97 dokumenter

Hej Eksperter

Jeg har en samling word-dokumenter (100+), hvori der indgår et brevhoved.

Disse dokumenter skal gives til 6 forskellige afdelinger - og i brevhovedet skal afdelingens navn stå...

Lige i øjeblikket har jeg i alle filerne skrevet "Afdeling XXX", og det vil jeg gerne have lavet om til f.eks. "Afdeling 4"...

Derfor ønskes et program, som kan :
- tage et helt bibliotek af .doc (Word 97) filer,
- åbne dem om (evt. en for en :-)
- lav søg/erstat på en søgestreng,  (f.eks. "Afd. XXX")
- erstatte denne søgestreng med en ny tekst (f.eks. "Afd. 7")

programmet skal både kunne erstatte tekst fundet i sidehovedet og i selve teksten...

Jeg er ligeglad, hvad programmet er programmeret i, sålænge det kan kører under windows 98 - og med minimal opsætning...

Kildekoden skal medfølge

/Søren Munk Skrøder
Avatar billede bearhugx Nybegynder
09. december 2002 - 14:23 #1
Jeg har selv kodet det (i Word97/VBA)

Koden medfølger herunder
-----------
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
-----------

/Søren
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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