Hallo,
ich möchte gerne ein Makro erstellen, welches alle dot Dateien in einem Verzeichnis öffnen und überprüft ob eine Fußzeile vorhanden ist.
Wenn Ja, soll das Makro die Fußzeile mit dem befüllen was im Zwischenspeicher ist.
(Alternativ wäre es super, wenn ich einen Fußzeilenbaustein dort einbauen könnte, den ich selber erstellt habe, aber irgendwie funktioniert das nicht so wie ich mir vorgestellt habe. Deshalb denke ich aus dem Zwischenspeicher einfügen ist einfacher.)
Am Ende soll die Datein geschlossen und gespeichert werden.
Ich habe nun soweit einen Code herausgesucht, der das umsetzen könnte, was ich vorhabe. Vorher war der Code für finden & ersetzen gedacht.
Code:
Dim anzdatei As Integer
Dim Pfad As String
Dim Datei As String
Dim Schutz As Boolean
Dim i As Long
Dim a As Long
Dim fs As New Collection
Schutz = False
Pfad = InputBox(„Geben Sie den Pfad an“, „Pfad“)
If Right(Pfad, 1) „“ Then Pfad = Pfad & „“
Datei = Dir(Pfad, vbDirectory)
If Datei = „“ Then
MsgBox „kein Ordner oder Dateien!“
Exit Sub
End If
Do While Datei „“
If Datei „.“ And Datei „…“ Then
If (GetAttr(Pfad & Datei) And vbDirectory) vbDirectory Then
If Right(Datei, 4) = „dotm“ Or Right(Datei, 4) = „dotx“ Then
fs.Add Pfad & Datei
End If
End If
End If
Datei = Dir
Loop
anzdatei = fs.Count
For i = 1 To anzdatei
WordBasic.DisableAutoMacros 1
Documents.Open fs(i)
If ActiveDocument.ProtectionType wdNoProtection Then
Schutz = True
'Array für den Dokumentenschutz der Abschnitte
ReDim strArray(ActiveDocument.Sections.Count)
'Array einlesen
For a = 1 To ActiveDocument.Sections.Count
If ActiveDocument.Sections(a).ProtectedForForms = True Then
strArray(a) = 1
Else
strArray(a) = 0
End If
Next
'Dokumentenschutz aufheben
ActiveDocument.Unprotect
End If
'hier wird Test in den Dokumenten gesucht und geändert
Dim MyStoryRange As Word.Range
For Each MyStoryRange In ActiveDocument.StoryRanges
With MyStoryRange.Find
.ClearFormatting
.Text = „Ursprungstext“
With .Replacement
Selection.WholeStory
Selection.PasteAndFormat (wdFormatOriginalFormatting)
End With
.Execute Replace:=wdReplaceAll, _
Format:=True, MatchCase:=True, _
MatchWholeWord:=True
End With
Next MyStoryRange
If Schutz = True Then
For a = 1 To ActiveDocument.Sections.Count
If strArray(a) = 1 Then
ActiveDocument.Sections(a).ProtectedForForms = True
Else
ActiveDocument.Sections(a).ProtectedForForms = False
End If
Next
'Dokumentenschutz wieder einschalten
ActiveDocument.Protect Password:="", NoReset:=True, Type:=wdAllowOnlyFormFields
End If
'Dokument wird gespeichert und geschlossen
ActiveDocument.Save
ActiveDocument.Close
WordBasic.DisableAutoMacros 0
Next i
MsgBox „Es wurden " & anzdatei & " Datei(en) neu gespeichert!“
End Sub
Nun zu meinem Part, hier soll dann die Fußzeile gewählte, alles markiert und durch den Fuß im Zwischenspeicher ersetzt werden.
Code:
ActiveWindow.View.SeekView = wdSeekCurrentPageFooter
Selection.WholeStory
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Mein Problem ist jetzt, dass ich nicht weiß, wie ich meinen Teil und den anderen Teil zusammenbringen kann. Außerdem möchte ich, dass das Makro nachschaut ob eine Fußzeile vorhanden ist, wenn nicht, soll auch nichts überschrieben werden.
Hat jemand da eine Idee? Ich bin leider nicht ganz so gut im Programmieren, verzeiht mir deshalb, falls ich jetzt den total falschen weg gegangen bin.
Falls jemand eine Idee hat, würde ich mich über eine Antwort freuen!
Gruß enny1086