[Risolto] Copia di sezioni fra documenti

Creare una macro - Scrivere uno script - Usare le API
Rispondi
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

[Risolto] Copia di sezioni fra documenti

Messaggio da c.spaziani »

Salve a tutti,
avrei bisogno di una macro che copia tutto il contenuto (compresa la formattazione) di una sezione all'interno di un'altra sezione in un altro documento.
Finora ho usato questa macro che copia solo il testo non formattato:

Codice: Seleziona tutto

oDoc = ThisComponent
oTS = oDoc.getTextSections
oSection = oTS.getByName("Testo")
sSectionTesto = oSection.Anchor.String       
sUrl = "c:\modellolettera.odt"
oDoc = StarDesktop.LoadComponentFromURL(sUrl, "_default", 0, aFileProp())
oTS = oDoc.getTextSections
oSection = oTS.getByName("Testo")
oSection.Anchor.String = sSectionTesto
La mia idea è di accedere alla sezione di origine in questo modo:

Codice: Seleziona tutto

oAnchor = oSection.getAnchor()
oDoc.CurrentController.select(oAnchor)
per poi incollare il contenuto nella sezione di destinazione.
Il problema è che non so come si ottiene il controllo del cursore all'interno di una sezione...
Qualche idea?
Ultima modifica di c.spaziani il martedì 17 gennaio 2012, 17:16, modificato 1 volta in totale.
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Copia di sezioni fra documenti

Messaggio da vladko »

Codice: Seleziona tutto

createTextCursorByRange(sectA.Anchor.Start)
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

Re: Copia di sezioni fra documenti

Messaggio da c.spaziani »

Ho provato ma non funziona.
Il testo viene incollato dove si trova il cursore all'apertura del file di destinazione (nel mio caso in una sezione che si chiama "intestazione" e non "testo" come vorrei)

Codice: Seleziona tutto

	oDoc = ThisComponent
	oTS = oDoc.getTextSections
	oSection = oTS.getByName("Testo")
	oAnchor = oSection.getAnchor()
	oDoc.CurrentController.Select(oAnchor)
	oTransferable = oDoc.CurrentController.getTransferable()
	sUrl = ConvertToURL("c:\modellolettera.ott")
	oDoc = StarDesktop.LoadComponentFromURL(sUrl, "_default", 0, aFileProp())
	oTS = oDoc.getTextSections
	oSection = oTS.getByName("Testo")
'	oCursor = oDoc.Text.createTextCursor()
'	oCursor.gotoRange(oSection.Anchor.Start, false) 'Questo è il modo in cui io ho posizionato il cursore
	oCursor = oDoc.Text.createTextCursorByRange(oSection.Anchor.Start) 'Questo è il modo suggerito da vladko
	oDoc.CurrentController.insertTransferable(oTransferable) 'Il risultato è lo stesso...
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Copia di sezioni fra documenti

Messaggio da vladko »

AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

Re: Copia di sezioni fra documenti

Messaggio da c.spaziani »

Dopo diversi tentativi sono riuscito a capire dove era l'errore.
Di seguito posto il codice funzionante:

Codice: Seleziona tutto

	oDoc = ThisComponent
	oTS = oDoc.getTextSections
	oSection = oTS.getByName("Testo")
	oAnchor = oSection.getAnchor()
	oDoc.CurrentController.Select(oAnchor)
	oTransferable = oDoc.CurrentController.getTransferable()
	sUrl = ConvertToURL(oDoc.DocumentInfo.getPropertyValue("TemplateFileName"))
	oDoc = StarDesktop.LoadComponentFromURL(sUrl, "_default", 0, oFileProp())
	oTS = oDoc.getTextSections
	oSection = oTS.getByName("Testo")
	oCursor = oDoc.Text.createTextCursorByRange(oSection.Anchor.Start)
	oDoc.getCurrentController().getViewCursor().gotoRange(oCursor, False)
	oDoc.CurrentController.insertTransferable(oTransferable)
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: [Risolto] Copia di sezioni fra documenti

Messaggio da vladko »

se copi incolli quella parte di codice su google ti porta ad un libro sulle macro che ti conviene scaricare ;)
http://belkaclacass.free.fr/cemkusproce ... rcelly.pdf
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

Re: [Risolto] Copia di sezioni fra documenti

Messaggio da c.spaziani »

vladko ha scritto:se copi incolli quella parte di codice su google ti porta ad un libro sulle macro che ti conviene scaricare ;)
http://belkaclacass.free.fr/cemkusproce ... rcelly.pdf
Ottimo, grazie!! :super:
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
relgycandy
Messaggi: 2
Iscritto il: sabato 5 gennaio 2013, 9:50

Re: [Risolto] Copia di sezioni fra documenti

Messaggio da relgycandy »

 Editato:  Spam, cancellato. 
NeoOffice 2.2.3 con MacOS 10.4 / OpenOffice 2.4 su Ubuntu 9.04
Rispondi