Tabellen Kopfzeilen-Text ändern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

pkuenemann
Beiträge: 6
Registriert: Di, 30.04.2019 09:21

Tabellen Kopfzeilen-Text ändern

Beitrag 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.
pkuenemann
Beiträge: 6
Registriert: Di, 30.04.2019 09:21

Re: Tabellen Kopfzeilen-Text ändern

Beitrag 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.
pkuenemann
Beiträge: 6
Registriert: Di, 30.04.2019 09:21

Re: Tabellen Kopfzeilen-Text ändern

Beitrag von pkuenemann »

...habe es selber herausgefunden: es ist RightPageHeaderContent()

Läuft jetzt. Herzlichen Dank!
Antworten