Cancellare più stili e formattazione insieme

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
sandro merlino
Messaggi: 595
Iscritto il: giovedì 12 gennaio 2012, 20:33

Cancellare più stili e formattazione insieme

Messaggio da sandro merlino »

Ciao a tutti,

Esiste un modo per cancellare più stili insieme? .Ne vorrei camcellare un centinaio e uno alla volta mi prende troppo tempi

Grazie 1000

Sandro
openoffice 4.1.1
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Cancellare più stili e formattazione insieme

Messaggio da hubert lambert »

Ciao sandro,

Purtroppe non è possibile, ma una macro può farlo. Ecco un esempio (ispirato da quello):

Codice: Seleziona tutto

sub delete_paragraph_styles
	dim stylelist()
	doc = thiscomponent
	parastyles = doc.StyleFamilies.ParagraphStyles
	for each stylename in parastyles.ElementNames
		style = parastyles.getByName(stylename)
		if style.isUserDefined then
			u = ubound(stylelist())+1
			redim preserve stylelist(u)
			stylelist(u) = stylename
		end if
	next stylename
	
	if ubound(stylelist()) < 0 then
		msgbox("Nessun stile da cancellare.")
		exit sub
	else
		GlobalScope.BasicLibraries.loadLibrary("Tools")
		stylelist() = BubbleSortList(stylelist())
	end if
	
	dlg = _deletestylebox("Stili da cancellare", stylelist())
	if dlg.execute() = 0 then
		dlg.dispose()
		exit sub
	end if
	todelete = dlg.getControl("lbox1").SelectedItems()
	dlg.dispose()

	delete = True
	for each stylename in todelete
		style = parastyles.getByName(stylename)
		if style.isInUse then
			opt = msgbox("Lo stile <" & stylename & "> è in uso." & chr(10) & "Cancellarlo lo stesso?", 4, "Avvertenza")
			if opt = 7 then
				delete = False
			end if
		end if
		if delete then
			parastyles.removeByName(stylename)
		else
			delete = True
		end if
	next stylename
	terminate:
end sub

function _deletestylebox(title, items())
   dialog = createunoservice("com.sun.star.awt.UnoControlDialog")
   dialogmodel = createunoservice("com.sun.star.awt.UnoControlDialogModel")
   dialogmodel.Title = title
   dialogmodel.Height = 100
   dialogmodel.Width = 100
   dialog.setModel(dialogmodel)
   dialog.setVisible(True)

   MARGIN = 7
   DLG_HEIGHT = dialog.PosSize.Height
   BTN_WIDTH = (dialog.PosSize.Width-3*MARGIN)/2
   CTRL_WIDTH = dialog.PosSize.Width-MARGIN*2
   BTN_HEIGHT = 30
   LBL_HEIGHT = 15
   LIST_HEIGHT = DLG_HEIGHT - BTN_HEIGHT - LBL_HEIGHT - 4*MARGIN

   label = dialogmodel.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
   label.setPropertyValues(array("Label", "MultiLine"), array("Selezionare gli stili da cancellare:", True)
   dialogmodel.insertByName("lbl1", label)
   dialog.getControl("lbl1").setPosSize(MARGIN, MARGIN, CTRL_WIDTH, LBL_HEIGHT, com.sun.star.awt.PosSize.POSSIZE)
 
   list = dialogmodel.createInstance("com.sun.star.awt.UnoControlListBoxModel")
   list.setPropertyValues(array("BackgroundColor", "MultiSelection", "SelectedItems", "StringItemList"), array(rgb(255,255,234), True, array(0), items())
   dialogmodel.insertByName("lbox1", list)
   dialog.getControl("lbox1").setPosSize(MARGIN, LBL_HEIGHT+2*MARGIN, CTRL_WIDTH, LIST_HEIGHT, com.sun.star.awt.PosSize.POSSIZE)

   btnok = dialogmodel.createInstance("com.sun.star.awt.UnoControlButtonModel")
   btnok.setPropertyValues(array("DefaultButton", "Label", "PushButtonType"), array(True, "OK", com.sun.star.awt.PushButtonType.OK))
   dialogmodel.insertByName("btnok", btnok)
   dialog.getControl("btnok").setPosSize(MARGIN, DLG_HEIGHT-MARGIN-BTN_HEIGHT, BTN_WIDTH, BTN_HEIGHT, com.sun.star.awt.PosSize.POSSIZE)

   btncancel = dialogmodel.createInstance("com.sun.star.awt.UnoControlButtonModel")
   btncancel.setPropertyValues(array("Label", "PushButtonType"), array("ANNULLA", com.sun.star.awt.PushButtonType.CANCEL))
   dialogmodel.insertByName("btncancel", btncancel)
   dialog.getControl("btncancel").setPosSize(BTN_WIDTH+2*MARGIN, DLG_HEIGHT-MARGIN-BTN_HEIGHT, BTN_WIDTH, BTN_HEIGHT, com.sun.star.awt.PosSize.POSSIZE)

   _deletestylebox = dialog
end function
Funziona soltanto per gli stili di paragrafi, ma posso modificarla se necessario.
Saluti.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
sandro merlino
Messaggi: 595
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Cancellare più stili e formattazione insieme

Messaggio da sandro merlino »

Ciao hubert lambert,

L' argomento macro è totalmente sconosciuto per me.
Mi dovresti indicare passo dopo passo come fare
L' unica cosa che posso dirti è che le numerose macro che ingenuamente ho creato quando non conoscevo l'argomento hanno una base di :Excel_CondFormat

Grazie 1000

Sandro
openoffice 4.1.1
hubert lambert
Volontario
Volontario
Messaggi: 164
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Cancellare più stili e formattazione insieme

Messaggio da hubert lambert »

Ho fatto una piccolissima estensione, chè mi pare più facile (spero che funzioni con OpenOffice3.3).
Installa il file allegato "cancella_stili.oxt" (Strumenti -> Gestione estensioni -> Aggiungi), apri il tuo documento Writer ed esegui la macro "main" nella libreria "hubertlambert" (Strumenti -> Macro -> Esegui macro -> Macro personali -> hubertlambert).
Una volta finito, puoi rimuovere l'estensione.
Saluti.
sanmerlino.png
 Editato: Avevo dimenticato: a titolo informativo, LibreOffice supporta la cancellazione multipla. 
Allegati
cancella_stili.oxt
(3.06 KiB) Scaricato 101 volte
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
sandro merlino
Messaggi: 595
Iscritto il: giovedì 12 gennaio 2012, 20:33

Re: Cancellare più stili e formattazione insieme

Messaggio da sandro merlino »

Ciao hubert lambert

Grazie 1000 per la tua risposta.
Per quello che conosco io è molto complicato ma ci provo e ti faccio sapere.

sandro
openoffice 4.1.1
Rispondi