Pagina 1 di 1

[Risolto] Copia di sezioni fra documenti

Inviato: lunedì 16 gennaio 2012, 12:56
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?

Re: Copia di sezioni fra documenti

Inviato: lunedì 16 gennaio 2012, 18:24
da vladko

Codice: Seleziona tutto

createTextCursorByRange(sectA.Anchor.Start)

Re: Copia di sezioni fra documenti

Inviato: lunedì 16 gennaio 2012, 19:07
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...

Re: Copia di sezioni fra documenti

Inviato: martedì 17 gennaio 2012, 7:30
da vladko

Re: Copia di sezioni fra documenti

Inviato: martedì 17 gennaio 2012, 17:15
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)

Re: [Risolto] Copia di sezioni fra documenti

Inviato: martedì 17 gennaio 2012, 18:26
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

Re: [Risolto] Copia di sezioni fra documenti

Inviato: martedì 17 gennaio 2012, 18:49
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:

Re: [Risolto] Copia di sezioni fra documenti

Inviato: sabato 5 gennaio 2013, 10:02
da relgycandy
 Editato:  Spam, cancellato.