Seite 1 von 1

Tabellen Kopfzeilen-Text ändern

Verfasst: Sa, 11.05.2019 20:40
von pkuenemann
Ich versuche, bei einem Tabellen-Dokument den Text der Kopfzeile zu bearbeiten, laufe aber auf eine Exception...

Code: Alles auswählen

Private Sub ReplaceCalcFields()
On Error GoTo Exit_ReplaceCalcFields

    Dim StyleFamilies As Object
    Dim PageStyles As Object
    Dim DefPage As Object
    Dim HText As Object
    Dim txt As String
    
    Set StyleFamilies = objDocument.StyleFamilies
    Set PageStyles = StyleFamilies.getByName("PageStyles")
    Set DefPage = PageStyles.getByName("Default")
    If DefPage.HeaderIsOn Then
        Set HText = DefPage.HeaderText.GetString()
        'txt = DefPage.HeaderText.GetString()
    End If

Exit_ReplaceCalcFields:
    On Error Resume Next
    Set HText = Nothing
    Set DefPage = Nothing
    Set PageStyles = Nothing
    Set StyleFamilies = Nothing
    Exit Sub

End Sub
...und zwar in der Zeite 'Set HText = DefPage.HeaderText.GetString()', also beim Zugriff auf den HeaderText. Auch die Variante 'txt = DefPage.HeaderText.GetString()' bringt einen Fehler. Der Debugger gibt an, dass das Objekt DefPage.HeaderText nicht existiert. Hat jemand eine Ahnung, was ich falsch mache? Ich bin dankbar für jede Hilfe.

LG, Lemmi.

Re: Tabellen Kopfzeilen-Text ändern

Verfasst: Mo, 13.05.2019 13:10
von pkuenemann
Hallo Faol,

sorry, ich hatte nur einen Codeausschnitt eingefügt. Die Instanzierung der benötigten Objekte findet natürlich statt:

Code: Alles auswählen

    Dim objServiceManager As Object
    Dim objDesktop As Object
    Dim objCoreReflection As Object
    Dim objDocument As Object
    Dim outDoc As String
    Dim args()

    outDoc = "E:\Beispiel\beispiel-tabelle.ods"

    Set objServiceManager = CreateObject("com.sun.star.ServiceManager")
    Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
    Set objCoreReflection = objServiceManager.createInstance("com.sun.star.reflection.CoreReflection")
    Set objDocument = objDesktop.loadComponentFromURL(ConvertToURL(outDoc), "_blank", 0, args)

    ReplaceCalcFields

    If Not objDocument Is Nothing Then Call objDocument.Close(True)
    Set objDocument = Nothing

    If Not objCoreReflection Is Nothing Then objCoreReflection.dispose
    If Not objDesktop Is Nothing Then objDesktop.Terminate

    Set objCoreReflection = Nothing
    Set objDesktop = Nothing
    Set objServiceManager = Nothing
Zu Deinen Ergänzungen: was bedeutet die Zeile:

Code: Alles auswählen

    mri Defpage
Ansonsten habe ich keine unterschiedlichen Kopfzeilen für rechts und links eingestellt sondern nur eine für alle Seiten (Bei Format-Seite ist die Option "Beide Seiten Gleich" aktiviert). Wie lauten dann der Zugriff auf den Header-Content, 'PageHeaderContent'?

LG,
Lemmi.

Re: Tabellen Kopfzeilen-Text ändern

Verfasst: Mo, 13.05.2019 16:03
von pkuenemann
...habe es selber herausgefunden: es ist RightPageHeaderContent()

Läuft jetzt. Herzlichen Dank!