Finalmente ho potuto provare la macro modificata x eliminare le celle vuote, è perfetta! ora ho un'altra richiesta se è possibile, la macro copia tutti i dati contenuti nelle celle indicate e li incolla tali e quali ma in certe celle ci sono delle formule che copiate in un'altro foglio non hanno senso. si può inserire nella macro un opzione per copiare solo testo e numeri(il risultato delle formule) senza le formule?
grazie Nicola
--------------------------------------------------
From: "Cesare Spaziani" <[email protected]>
Sent: Tuesday, March 13, 2012 3:50 PM
To: <[email protected]>
Subject: Re: [utenti] copiare dati tra fogli

Il 13/03/2012 13:38, nicola ha scritto:
si la prima colonna è sempre utilizzata ma mi devi anche spiegare come
utilizzare il codice che mi hai inviato, le mie conoscenze di Basic
sono molto limitate.
x la birra nessun prooblema, la faccio io ;-)

--------------------------------------------------
From: "Cesare Spaziani" <[email protected]>
Sent: Tuesday, March 13, 2012 12:28 PM
To: <[email protected]>
Subject: Re: [utenti] copiare dati tra fogli

Il 12/03/2012 22:42, nicola ha scritto:
GRAZIE! era proprio quello che cercavo, sarebbe possibile eliminare le
celle vuote nel file "dati"?  mi spiego meglio
nell'intervallo a13:i44 non vengono sempre scritte tutte le righe e
incollando tutto l'intervallo si creano numerosi spazi vuoti,
pensavo si potesse incollare i dati sucessivi a partire dalla prima
riga effetivamente vuota,comunque posso sempre risolvere manualmente
se passi dalle parti di Cagliari ti offro da bere.
Nicola
Ti posto la macro con le modifiche:

Dim aFileProp(0) As New com.sun.star.beans.PropertyValue
Sub Main
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Foglio1")
   oRange = oSheet.getCellRangeByName("A13:I44")
   oDoc.CurrentController.Select(oRange)
   oTransferable = oDoc.CurrentController.getTransferable()
   oDoc =
StarDesktop.LoadComponentFromURL(ConvertToURL("/home/fatture/dati.ods"),
"_default", 0, aFileProp())
   oSheet = oDoc.Sheets.getByName("Foglio1")
   oCellCursor = oSheet.createCursor()
   oCellCursor.gotoEndOfUsedArea(False)
   nEndRow = oCellCursor.getRangeAddress().endRow + 1
   oRange = oSheet.getCellRangeByPosition(0, nEndRow, 8, nEndRow + (44
- 13)) '0=A 8=I
   oDoc.CurrentController.Select(oRange)
   oDoc.CurrentController.insertTransferable(oTransferable)
   For i = nEndRow + (44 - 13) To nEndRow Step -1
       If oSheet.getCellByPosition(0, i).Type =
com.sun.star.table.CellContentType.EMPTY Then
           oSheet.getRows.removeByIndex(i, 1)
       End If
   Next i
   oDoc.store()
   oDoc.close(false)
End Sub

In questo modo, dopo aver incollato i dati, la macro fa una scansione
alla rovescia del range selezionato e cerca le celle vuote della colonna
A x cancellare la riga corrispondente.
Se vuoi eseguire il controllo su un'altra colonna, basta che cambi il
primo parametro di getCellByPosition (0=A, 1=B, 2=C, ecc.)


---------------------------------------------------------------------
Per cancellarsi: [email protected]
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: [email protected]
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it



-----
Nessun virus nel messaggio.
Controllato da AVG - www.avg.com
Versione: 2012.0.1913 / Database dei virus: 2114/4868 - Data di rilascio: 13/03/2012


---------------------------------------------------------------------
Per cancellarsi: [email protected]
Per informazioni: http://www.openoffice.org/it/
Per avviare una nuova discussione: [email protected]
Archivi: http://mail-archives.apache.org/mod_mbox/incubator-ooo-utenti-it

Rispondere a