🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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) 197-mal heruntergeladen

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
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.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 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 gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten