Libre Office

SelectedFormat, Value = ???

Alles zur Programmierung im LibreOffice.
Antworten
Butch
Beiträge: 156
Registriert: Mi 20. Jan 2016, 18:59

SelectedFormat, Value = ???

Beitrag von Butch » Di 14. Feb 2017, 13:34

Ich bin am Verzweifeln!

Ich kopiere in meinem Makro den Inhalt eines Dokuments in ein neues Dokument, um dort durch Suchen/Ersetzen Diverses zu tun (Formatierungen werden durch sichtbare Formatcodes ersetzt). Funktioniert an sich tadellos, bis auf ein paar hartnäckige Details.

Beim Kopieren kommt Folgendes zum Einsatz:

Code: Alles auswählen

  args1(0).Name = "SelectedFormat"
  args1(0).Value = 51
Ich finde allerdings nirgends Informationen zu diesem Value. Aus Forenbeiträgen weiß ich, dass 1 reiner txt wäre, und 10 wäre rtf. Ich arbeite im Moment mit 51, ohne zu wissen, was das ist. Der Grund: Mit 10 werden die Farbwerte verschiedener Formate (zB CharBackColor) nicht exakt mitkopiert. Ich kann also mit 10 nicht arbeiten.

Mit Value = 51 taucht allerdings ein anderes, ganz komisches Problem auf:

Wenn ich zB Text in Schriftgröße 10 durch <small>Text in Schriftgröße 10</small> ersetze, passiert bei dem dt. Anführungszeichen Folgendes
<small>This is an 10 pt direct format paragraph.“</small>
Das heißt: Das Anführungszeichen "rutscht aus der Formatierung heraus"!!!

Ich hänge eine Demo.doc bei. Unten wäre mein Makro.

Ich hoffe, hier treibt sich ein Guru herum! Wäre toll!

Code: Alles auswählen

Sub test

  Dim noargs()
  Dim oFrame As Object

  Dim oDoc2 As Object
  Dim oFrame2 As Object

REM : COPY FULL CONTENT to a NEW DOCUMENT to do the work there
  
  oFrame = ThisComponent.CurrentController.Frame
  Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

  Dispatcher.executeDispatch(oFrame, ".uno:SelectAll", "", 0, Array())
  Dispatcher.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())

  sURL = "private:factory/swriter"
  oDoc2 = StarDesktop.loadComponentFromURL(sURL,"_blank",0,noargs())
  oFrame2 = oDoc2.CurrentController.Frame
   
  Dispatcher.executeDispatch(oFrame2, ".uno:InsertPara", "", 0, Array())
  Dim args1(0) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "SelectedFormat"
  args1(0).Value = 10
  Dispatcher.executeDispatch(oFrame2, ".uno:ClipboardFormatItems", "", 0, args1())

REM : 10PT --> <small> ... </small>

  Dim oDoc As Object
  Dim oReplace As Object
  Dim SrchAttributes(0) As New com.sun.star.beans.PropertyValue
  Dim ReplAttributes(0) As New com.sun.star.beans.PropertyValue
    
  oDoc = ThisComponent
  oReplace = oDoc.createReplaceDescriptor
  oReplace.searchAll=True

  oReplace.SearchRegularExpression=True

  oReplace.SearchString = ".*"
  oReplace.searchStyles=True

  oReplace.ReplaceString = "<small>&</small>"

  SrchAttributes(0).Name = "CharHeight"
  SrchAttributes(0).Value = 10
  oReplace.SetSearchAttributes(SrchAttributes())

  oDoc.replaceAll(oReplace)

End Sub
Dateianhänge
Demo.doc
(9 KiB) 222-mal heruntergeladen

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2720
Registriert: Fr 10. Dez 2010, 10:01

Re: SelectedFormat, Value = ???

Beitrag von karolus » Di 14. Feb 2017, 14:32

Hallo

Mir ist nicht so ganz klar, wieso du mit diesem umständlichen Dispatcher-kram in ein neues Dokument kopierst … es gibt …storeASUrl

http://www.dannenhoefer.de/faqstarbasic ... l#Zweig136
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Butch
Beiträge: 156
Registriert: Mi 20. Jan 2016, 18:59

Re: SelectedFormat, Value = ???

Beitrag von Butch » Di 14. Feb 2017, 14:52

Na warum ... weil ich keine Ahnung habe! Aber auch nach deinem Hinweis werde ich leider nicht klüger. Würde das an meinem Problem was ändern? Ich brauche jedenfalls Folgendes:

Ich habe eine offene odt-Datei, die ich auch offen behalten will. Ich kopiere ihren Inhalt in ein neues Dokument, lass dort die Suchen/Ersetzen-Sachen machen und das Dokument schließlich als txt-Datei speichern.

(Inzwischen habe ich gesehen, dass es beim Generieren eines neuen Dokuments diverse Optionen gibt, statt meinem noargs() ...)

Butch
Beiträge: 156
Registriert: Mi 20. Jan 2016, 18:59

Re: SelectedFormat, Value = ???

Beitrag von Butch » Mi 15. Feb 2017, 16:40

Auch niemand hier, der mir sagen könnte, wo Informationen über die Values für SelectedFormat zu finden wären???

Open Office
Antworten