Søg og erstat i mange dokumenter (også i sidehoved og sidefod)
Jeg har en hel stime af dokumenter i samme folder, som anvendes som skabeloner der skal udfyldes i forbindelse med validering af nye releases af vort IT systemI den forbindelse skal alle dokumenterne gennemgåes og opdateres med korrekt version...
Følgende svar jeg har fundet fra supertekst her på siden kan sådan set gøre det meste af jobbet, men den rører ikke ved teksten i sidehovedet...
https://www.computerworld.dk/eksperten/spm/839599
Jeg er desværre ikke nogen haj til VBA kode. Har forsøgt men uden held.
Supertekst nævner selv i tråden, om det er nødvendigt, at den skal rette i sidehoved også, men brugeren der har oprettet trådent har ikke brug for dette. Det har jeg tilgengæld...
Faktisk både og. Altså både i selve dokumentet og i dens sidehoved.
Håber en kan hjælpe med at tweeke denne kode.
Dim xDoc
Sub AutoOpen() 'Vælg hvilke drev/mappe
Dim aktuelleSti
aktuelleSti = valgAfSti
If aktuelleSti <> "" Then
findFiler aktuelleSti
MsgBox ("Søg&Erstat på stien: " + aktuelleSti + " er udført")
Else
MsgBox ("Sti er ikke valgt")
End If
End Sub
Private Function valgAfSti()
Dim doksti
filNavn = ""
On Error GoTo fejl1
With Dialogs(wdDialogFileOpen)
.Name = "*.doc"
.Display
valgAfSti = CurDir
If Right(valgAfSti, 1) <> "\" Then
valgAfSti = valgAfSti + "\"
End If
End With
Exit Function
fejl1:
valgAfSti = ""
End Function
Private Sub findFiler(aktuelleMappe)
Dim fs, f, f1, fc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(aktuelleMappe)
Set fc = f.Files
Rem Check de enkelte filer i valgte drev/mappe
For Each f1 In fc
If Right(LCase(f1.Name), 4) = ".doc" Then
udførSøgErstat aktuelleMappe + f1.Name
End If
Next
End Sub
Private Sub udførSøgErstat(docFil)
Set xDoc = CreateObject("Word.Application")
With xDoc
.Documents.Open FileName:=docFil
End With
Rem Gentages det nødvendige antal gange
søgErstat "gl. adresse", "Ny adresse" '<----------------------
søgErstat "gl. postnr", "Nyt postnr" '<----------------------
If xDoc.ActiveDocument.Saved = False Then
xDoc.ActiveDocument.Save
End If
xDoc.Application.Quit
Set xDoc = Nothing
End Sub
Private Sub søgErstat(søg, erstat)
With xDoc
Set myRange = .ActiveDocument.Range(Start:=0, End:=0)
Selection.HomeKey Unit:=wdStory
Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = søg
.Replacement.Text = erstat
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchControl = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
End With
End Sub