Hallo mikele, hallo Karolus,
danke erstmal für Eure Rückmeldungen!
Seit meiner Anfrage war ich nicht ganz untätig und es ist mir auch gelungen eine (auf meinem Rechner) funktionierende Prozedur zu finden, die - nach ein paar Anpassungen - genau das tut, was ich mir von ihr erhofft habe, nämlich Texte in die Zwischenablage schreiben. Das war auch nicht anders zu erwarten, denn den Code habe ich hier in diesem Forum entdeckt!

Der angepasste Code sieht nun so aus:
Code: Alles auswählen
Option Explicit
' MAKRO-BEISPEL Text in die Zwischenablage kopieren
' FUNDSTELLE LibreOffice-Forum
' THEMA Zwischenablage befüllen / einfügen
' AUTOR Frieder 12.02.2012 16:29
' MODIFIZIERT Proma 05.08.2025
Global sTxtCString As String
Sub Demo_pCopyToClipboard()
' Zeigt anhand eines Beispiels den
' Aufruf der Prozedur pCopyToClipBoard()
Dim c As String 'Zeilenwechsel
Dim strTxt As String, strPmt As String 'Beispiel-Text / Eingabeaufforderung
Dim strTtl As String, strDft As String 'Beschriftung Titelleiste / Vorschlag für eine Eingabe
' BENUTZEREINGABE VORBEREITEN
c = Chr(10) 'Zeilenumbruch definieren
strPmt = "Bitte geben sie den Text ein," & c & "den Sie " 'Eingabeaufforderung (Teil 1)
strPmt = strPmt & "in die Zwischenablage kopieren möchten:" 'Eingabeaufforderung (Teil 2)
strTtl = "Demo - Text in die Zwischenablage schreiben" 'Beschriftung für die Titelleiste der InputBox
strDft = "'Abc Äöü ß?! 123" 'Vorschlag für eine Eingabe
' BENUTZEREINGABE HOLEN
strTxt = InputBox(strPmt, strTtl, strDft) 'Benutzer zur Text-Eingabe per InputBox auffordern
If Trim(strTxt) = "" Then GoTo Exit_Demo_pCopyToClipboard 'Wenn Benutzereingabe unbrauchbar, Prozedur verlassen
' PROZEDURAUFRUF
CopyToClipBoard(strTxt) 'Ruft die zu testende Prozedur auf
'ERFOLGSMELDUNG
MsgBox "Dieser Text wurde ins ClipBoard kopiert" & c & strTxt 'Bestätigung zeigen
Exit_Demo_pCopyToClipboard: 'SM: Ausgang
End Sub
Sub CopyToClipBoard(sText)
Dim oClip As Object
Dim oTR As Object
' create SystemClipboard instance
oClip = CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
oTR = createUnoListener("Tr_", "com.sun.star.datatransfer.XTransferable")
' set data
oClip.setContents(oTR, Null)
sTxtCString = sText
'oClip.flushClipboard() ' does not work
End Sub
Function Tr_getTransferData(aFlavor As com.sun.star.datatransfer.DataFlavor)
If (aFlavor.MimeType = "text/plain;charset=utf-16") Then
Tr_getTransferData() = sTxtCString
End If
End Function
Function Tr_getTransferDataFlavors()
Dim aFlavor As New com.sun.star.datatransfer.DataFlavor
aFlavor.MimeType = "text/plain;charset=utf-16"
aFlavor.HumanPresentableName = "Unicode-Text"
Tr_getTransferDataFlavors() = Array(aFlavor)
End Function
Function Tr_isDataFlavorSupported(aFlavor as com.sun.star.datatransfer.DataFlavor) as Boolean
If aFlavor.MimeType ="text/plain;charset=utf-16" Then
Tr_isDataFlavorSupported = true
Else
Tr_isDataFlavorSupported = false
End If
End Function
Leider hat mir dieser Code letztlch aber nichts gebracht, LO ist auch nach Einbau dieser Prozedur weiterhin beim Versuch, Texte einzurücken, zu kommentieren usw. regelmäßig abgestürzt.
Danach habe ich in den BIT_ die Wartezeiten nach den ClipBoard-Aktionen von 50 (vermutlich Millisekunden) auf 150 erhöht und auch vor jeder ClipBoard-Aktion das ClipBoard zurücksetzen lassen mit BIT_ClearClipboard().
Seither laufen die Aktionen in den BIT_ wieder wie geschmiert. Naja, ein bisschen langsamer sind sie natürlich jetzt schon geworden (3-fache Wartezeit halt). Aber tot sind die Pferde noch lange nicht, hächstens ein bisschen altersschwach...
Vielen Dank nochmal für Eure Nachfrage und liebe Grüße
vom Martin