Hallo Reinhard,
hab mich jetzt doch aufgerafft und bin ins Büro gefahren.
Code funktioniert soweit, allerdings werden aus dem jeweiligen Verzeichnis nur die gefundenen dot-Dateien aufgelistet.
Für mein Beispiel müsste konkret nach der Zeichenfolge 09281/409-0
gesucht werden. Diese Zeichenfolge könnte allerdings nicht nur in der Fußzeile sondern auch im Text vorkommen.
Ich poste hier mal den Code den ich gefunden habe und „der eine Zeichenfolge in allen Dokumenten, welche sich im nominierten Verzeichnis befinden ersetzt. Der Code berücksichtigt alle Teile der Dokumente (Story Ranges).“
’ **** Anpassbare Werte ****
Private Const Verzeichnis = „C:\Eigene Dateien“
Private Const Filter = „*.doc“
Private Const UnterverzeichnisseDurchsuchen = 0
Private Const Suche = „Felix Muster“
Private Const ErsetzeMit = „Felix Muster“
’ **** Ende der Anpassung ****
Private Teil As Range
Sub SuchenErsetzenGanzesVerzeichnis()
Dim oDoc As Document
tmp = UnterverzeichnisseDurchsuchen
If tmp = 1 Then UVD = True Else UVD = False
If Documents.Count > 0 Then Dokument = ActiveDocument.FullName
With Application.FileSearch
.LookIn = Verzeichnis
.FileName = Filter
.SearchSubFolders = UVD
.Execute SortBy:=msoSortByFileName
Anzahl = .FoundFiles.Count
Application.ScreenUpdating = False
For Each aDok In .FoundFiles
If aDok Dokument Then
On Error Resume Next
Documents.Open aDok
Fehler = Err.Number
On Error GoTo 0
If Fehler = 0 Then
Set oDoc = ActiveDocument
If oDoc.ProtectionType = wdNoProtection Then
If oDoc.ReadOnly = False Then
StatusBar = „Durchsuche Dokument " + aDok + „.“
DoEvents
SuchenErsetzenSchleife
oDoc.Close SaveChanges:=wdSaveChanges
Else
oDoc.Close SaveChanges:=wdDoNotSaveChanges
End If
Else
oDoc.Close SaveChanges:=wdDoNotSaveChanges
End If
End If
End If
Next
End With
StatusBar = CStr(Anzahl) + " Dokumente durchsucht.“
DoEvents
Application.ScreenUpdating = True
End Sub
Private Sub SuchenErsetzenSchleife()
Application.ScreenUpdating = False
For Each Teil In ActiveDocument.StoryRanges
SuchenErsetzen
While Not (Teil.NextStoryRange Is Nothing)
Set Teil = Teil.NextStoryRange
SuchenErsetzen
Wend
Next
End Sub
Private Sub SuchenErsetzen()
Teil.Find.Execute FindText:=Suche, _
ReplaceWith:=ErsetzeMit, _
MatchCase:=GrossUndKleinSchreibung, _
MatchWholeWord:=GanzesWort, _
MatchWildcards:=Jocker, _
Replace:=wdReplaceAll
End Sub
Das wäre wahrscheinlich der Code für meinen 2. Punkt, allerdings müsste hier nach der Zeichenfolge gesucht werden und diese wenn sich
die Fundstelle im Text befindet durch eine neue Zeichenfolge ersetzt werden (09281/409-100).Befindet sich die Zeichenfolge jedoch in der Fußzeile müsste das folgende Makro (habe ich so aufgezeichnet!) ausgeführt werden.
Sub AlteFußzeileErsetzen()
’
’
If ActiveWindow.View.SplitSpecial wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
If Selection.HeaderFooter.IsHeader = True Then
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.TypeParagraph
Selection.TypeText Text:=„Fuß“
Selection.Range.InsertAutoText
Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
Vielen Dank schon mal im voraus.
Noch einen schönen Sonntag wünscht
Franz