Hatte mich verlesen, und irrtümlich angenommen, dass die Positionsangabe auf eine Tabelle in der Fusszeile bezogen wäre.
Daher brauche ich keine Beispieldatei.
Sub BearbeiteWordDatei(filePath As String, templateDocPortrait As Document, templateDocLandscape As Document)
Dim doc As Document
Dim orientation As String
Dim rngTmp As Range, lngTmp As Long
Dim template As Document
Dim headFoot As HeaderFooter
' Lade das Word-Dokument
Set doc = Documents.Open(filePath)
' Bestimme die Ausrichtung des Dokuments
orientation = doc.PageSetup.orientation
With doc.Sections(1).Footers(wdHeaderFooterPrimary)
Select Case doc.PageSetup.orientation
' Füge die entsprechende Fußzeile ein
Case wdOrientPortrait
Set template = templateDocPortrait
Case wdOrientLandscape
Set template = templateDocLandscape
End Select
Set headFoot = template.Sections(1).Footers(wdHeaderFooterPrimary)
headFoot.Range.Copy
.Range.Paste
' Textlängen abgleichen
Do While .Range.StoryLength > headFoot.Range.StoryLength
Set rngTmp = .Range
rngTmp.Start = rngTmp.End - 1
lngTmp = rngTmp.StoryLength
rngTmp.Delete
If rngTmp.StoryLength = lngTmp Then
Exit Do
End If
Loop
End With
With doc.PageSetup
If .FooterDistance = 42.55 Then
.FooterDistance = CentimetersToPoints(0.4)
End If
End With
' Speichere das aktualisierte Dokument
doc.Save
doc.Close SaveChanges:=False
Set doc = Nothing
End Sub
In diesem VBA-Code ist eine Abfrage enthalten, mit der die Position der Fusszeile ausgelesen wird.
With doc.PageSetup
If .FooterDistance = 42.55 Then
.FooterDistance = CentimetersToPoints(0.4)
End If
End With
Kurioserweise wird beim direkten Auslesen des Punktwertes von 1,5 cm ein anderer Wert ausgegeben, als wenn dieser Werte mit der Funktion CentimetersToPoints umgerechnet wird. Daher wurde der Point-Wert von 42.55 direkt eingegeben.
|