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
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
Ottimo, grazie!!

Re: [Risolto] Copia di sezioni fra documenti
Inviato: sabato 5 gennaio 2013, 10:02
da relgycandy
Editato: Spam, cancellato. |