Seite 1 von 1

Aus Zwischenablage Hyperlink erstellen

Verfasst: Mo, 07.08.2017 13:47
von Schmunzel57
Hallo Forum,

bin jetzt schon für mein Problem über 2 Stunden am suchen, kann aber für die Lösung nur Teile finden, die nicht zusammen passen. Folgendes Problem:

- ein externers Programm schreibt in die Zwischenablage einen Link (z.B. file://........)
- in meiner Tabelle markiere ich eine Zelle (z.B. E10)
- jetzt drücke ich einen Button ("Linken") der eine Macrofunktion aufruft
- die erstellt jetzt einen Hyperlink in der Zelle (E10) mit dem Link aus der Zwischenablage

Feststellen, welche Zelle markiert ist (also E10) und das rein schreiben, hab ich in einem anderen Macro schon realisiert. Mir geht es also um die Functionen rund um die Zwischenablage. Mir würde (neben einer funktionierenden Funktion) auch schon ein Link langen zu den Befehlen rund um die Zwischenablage.

Vielen Dank schon mal an alle die mir hierzu antworten.
Schmunzel57

P.S: beim Aufzeichnen mit dem Macro-Recorder wird die Funktion [STRG]+V als nicht veränderbarer String umgewandelt. Hier genau fehlt also das Auslesen der Zwischenablage.


_________________
Moderation: Thema verschoben nach Makros und allgemeine Programmierung, wo alle Themen zur individuellen Programmierung hingehören.

Gruß
lorbass, Moderator

Re: Aus Zwischenablage Hyperlink erstellen

Verfasst: Mo, 07.08.2017 20:13
von Stephan
z.B. Sub ConvertClipToText() aus:
https://forum.openoffice.org/en/forum/v ... rd#p222223

erledigt das.

Code: Alles auswählen

Sub ConvertClipToText
  'This clipboard routine was created by Andrew Pitonyak
  'my only adaptation was to make convertedString$ variable a global
  'to pass it on to the next subroutine for processing
  Dim oClip, oClipContents, oTypes
  Dim oConverter 
  ' convertedString$ is now a global
  Dim i%, iPlainLoc%

  iPlainLoc = -1

  oClip = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
  oConverter = createUnoService("com.sun.star.script.Converter")

'  Print "Clipboard name = " & oClip.getName()
'  Print "Implemantation name = " & oClip.getImplementationName()
  oClipContents = oClip.getContents()
  oTypes = oClipContents.getTransferDataFlavors()

  Dim msg$, iLoc%, outS
  msg = ""
  iLoc = -1
  For i=LBound(oTypes) To UBound(oTypes)
    If oTypes(i).MimeType = "text/plain;charset=utf-16" Then
      iPlainLoc = i
      Exit For
    End If
     'msg = msg & "Mime type = " & x(ii).MimeType & " normal = " & x(ii).HumanPresentableName & Chr$(10)
  Next
  If (iPlainLoc >= 0) Then
    convertedString$ = oConverter.convertToSimpleType(oClipContents.getTransferData(oTypes(iPlainLoc)), com.sun.star.uno.TypeClass.STRING)
    MsgBox convertedString$
  End If
End Sub

Gruß
Stephan