Macro per incollare del testo non formattato dagli appunti rimuovendo le interruzioni di linea e gli stili
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Descrizone
Questa macro per incolla il contenuto degli appunti come testo non formattato, dopo aver rimosso le interruzioni di linea e gli stili. Per usare questa macro in modo efficiente, potete aggiungere una combinazione di tasti per richiamare la funzione InsertClipboardTextInWriter()
dal menu ▸ .
Per incollare dagli appunti solamente il testo non formattato potete usare la macro generale getClipboardText().
Codice
' Copyright (c) 2011 Frieder Delor, Mailto: delorfr@googlemail.com
'
' This program is free software: you can redistribute it and/or modify
' it under the terms of the GNU General Public License as published by
' the Free Software Foundation, either version 3 of the License, or
' (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
' GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program. If not, see <http://www.gnu.org/licenses/>.
Option Explicit
Sub InsertClipboardTextInWriter()
Dim sText As String
sText= (getClipboardText)
sText = Replace (sText,Chr(10)," ") ' Sostituisce le interruzioni di linea con degli spazi
sText = Replace (sText,Chr(13)," ") ' Sostituisce le interruzioni di paragrafo con degli spazi
WriteCursorPosition(sText) ' Incolla in Writer
End Sub ' InsertClipboardTextInWriter
Sub WriteCursorPosition(sText as String)
'''Questa funzione è stata tratta da http://www.oooforum.org/forum/viewtopic.phtml?t=75409'''
'''Incolla il testo in Writer nella posizione in cui si trova in cursore'''
Dim oViewCursor As Object ' com.sun.star.text.XTextViewCursor
Dim oText As Object
oViewCursor = ThisComponent.GetCurrentController.ViewCursor
If IsEmpty(oViewCursor.Cell) Then
oText = ThisComponent.text
Else
oText = oViewCursor.Cell.Text
End If
oText.insertString(oViewCursor, sText, false)
End Sub ' WriteCursorPosition
Function getClipboardText() As String
'''Restituisce una stringa contenente il testo presente negli appunti'''
Dim oClip As Object ' com.sun.star.datatransfer.clipboard.SystemClipboard
Dim oConverter As Object ' com.sun.star.script.Converter
Dim oClipContents As Object
Dim oTypes As Object
Dim i%
oClip = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
oConverter = createUnoService("com.sun.star.script.Converter")
On Error Resume Next
oClipContents = oClip.getContents
oTypes = oClipContents.getTransferDataFlavors
For i = LBound(oTypes) To UBound(oTypes)
If oTypes(i).MimeType = "text/plain;charset=utf-16" Then
Exit For
End If
Next
If (i >= 0) Then
On Error Resume Next
getClipboardText = oConverter.convertToSimpleType _
(oClipContents.getTransferData(oTypes(i)), com.sun.star.uno.TypeClass.STRING)
End If
End Function ' getClipboardText