BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

SelectedFormat, Value = ???

Alles zur Programmierung im LibreOffice.
Antworten
Butch
Beiträge: 122
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) 172-mal heruntergeladen

Benutzeravatar
karolus
Beiträge: 2170
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
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Butch
Beiträge: 122
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: 122
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???

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten