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

Rispondere a