Estrapolare un singolo foglio da "X fogli" e salvarlo in xls

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Estrapolare un singolo foglio da "X fogli" e salvarlo in xls

Messaggio da Tuoangelo »

Ciao a tutti,
come forse alcuni di voi sanno dopo aver letto la mia presentazione, sono un autodidatta sia del VBA di Excel che di Basic (di quest'ultimo ho iniziato da poco a leggere alcuni manuali).
Prima di scrivere questo messaggio ho cercato sul forum di trovare qualcuno che avesse il mio stesso problema o quasi, provando anche diverse soluzioni suggerite tra vari utenti ma si può dire che mi manca l'ultimo passaggio; ora vi spiego cosa vorrei fare.

Ho un file in Calc con diversi fogli (che devo ancora creare), il mio intento è quello di estrapolare un foglio da tutti quelli presenti, togliendo le formule e pulsanti dove sono presenti ma lasciando i valori scritti nelle celle e salvarlo in formato xls ( in quanto successivamente dovrà esser mandato tramite email a persone che utilizzano l'Excel di office).
Qui sotto vi "allego" il codice che fino a qualche mesetto fa utilizzavo con l'Excel della Microsoft e che funzionava.

Codice: Seleziona tutto

 Dim RngEsaminato As Range
    Dim Cella As Range
    Dim Pulsante As OLEObject
    
    Application.ScreenUpdating = False
    'Copio Foglio
    ActiveSheet.Copy
    'scelgo dove salvare il nuovo file ed il nome + estensione da assegnargli
    Application.Dialogs(xlDialogSaveAs).Show
    
    'rimuovo le formule e lascio solo i valori
    Set RngEsaminato = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
    For Each Cella In RngEsaminato
        Cella.Value = Cella.Value
    Next Cella
    
    'elimino i pulsanti che intersecano la colonna M
    Set RngEsaminato = ActiveSheet.Range("M:M")
    For Each Pulsante In ActiveSheet.OLEObjects
        If Not Intersect(Pulsante.TopLeftCell, RngEsaminato) Is Nothing Then
            Pulsante.Delete
           End If
    Next Pulsante
    
    'elimino la colonna M
    RngEsaminato.Delete
    
    ActiveWindow.Close True
    Application.ScreenUpdating = True 
Ora vi allego anche il file che sto creando da 0 con Libreoffice, all'interno di LibreOffice Basic, troverete sotto la cartella "Protezione", il modulo salva_foglio, contenente tutte le prove che ho fatto fino ad adesso ma con scarso risultato o quasi.
Vi sarei grato se mi potreste aiutare a capire dov'è che sbaglio e a capire meglio questo nuovo linguaggio di programmazione.
Grazie a tutti voi
Saluti
Alex
Allegati
Schede film Test.ods
(30.76 KiB) Scaricato 82 volte
Ultima modifica di Tuoangelo il domenica 23 maggio 2021, 10:07, modificato 1 volta in totale.
LibreOffice 7 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione singolo foglio e salvataggio in xls

Messaggio da patel »

non ho capito quale dovrebbe essere il risultato finale, non mi sembra che ci sia nel tuo file allegato
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: Esportazione singolo foglio e salvataggio in xls

Messaggio da Tuoangelo »

Ciao Patel,
innanzitutto ti ringrazio per aver risposto.
Il risultato finale che devo ottenere è l'estrapolazione di un foglio elettronico (es. Scheda1), togliendo in esso i pulsanti, formule ma lasciando quello che c'è scritto nelle celle e poterlo salvare in formato xls.
Nel file che ho allegato se provi ad utilizzare uno di quei tasti che ho creato effettivamente non fa nulla in quanto, non ho associato il pulsante alla macro; però se apri libreoffice basic, troverai la "cartella" protezione che al suo interno conterrà le macro che ho creato ma che non mi permettono di salvarlo in xls.
Il codice che vedi nel mio messaggio è quello che ho utilizzato su excel ma che con libreoffice calc non funziona correttamente.

Spero di esser stato un pò più chiaro, nell'esposizione del problema.
Grazie ;)
LibreOffice 7 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Esportazione singolo foglio e salvataggio in xls

Messaggio da patel »

Tuoangelo ha scritto: Ho un file in Calc con diversi fogli (che devo ancora creare), il mio intento è quello di estrapolare un foglio da tutti quelli,
Nel titolo parli di singolo foglio e poi parli di "estrapolare un foglio da tutti quelli"
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: Esportazione singolo foglio e salvataggio in xls

Messaggio da Tuoangelo »

Beh se avessi un singolo foglio non avrei bisogno di esportare il foglio stesso ma solo quello di salvarlo in xls senza le formule.
Comunque cambierò il titolo, sperando che possa esser un pò più chiaro e di maggior aiuto per risolvere questo problema e utile per chi si trovi nella mia stessa situazione.
LibreOffice 7 su Windows 10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Estrapolare un singolo foglio da "X fogli" e salvarlo in

Messaggio da Gaetanopr »

Tuoangelo ha scritto: Qui sotto vi "allego" il codice che fino a qualche mesetto fa utilizzavo con l'Excel della Microsoft e che funzionava.
Purtroppo ho problemi con il mouse e vado a rilento, comunque ti allego la tua macro VBA convertita in basic per OpenOffice.
A mio avviso i passaggi che dovresti fare sono i seguenti
1) Creare un nuovo documento Calc
2) Copiare il singolo foglio sul nuovo documento comprensivo di tutto
3) Far lavorare la macro convertita sul nuovo documento
4) Salvare in sls
Oppure lanciare la macro sul file originale e poi copiare il foglio in un nuovo documento e poi salvare in xls.
Puoi farlo manualmente, tasto dx sulla linguetta del foglio - Copia foglio e selezioni "Nuovo Documento" e salvi in xls.
Avendo la macro convertita le altre operazioni sono abbastanza semplici, puoi farle manualmente o con poche righe di codice(anche macro registrate).
Prova da solo.

Codice: Seleziona tutto

Sub email()
'
Dim RngEsaminato As Object
    Dim Cella As Object
    Dim oSel As Object
    Dim oSheet As Object
    Dim DrawPage As Object, frm As Object
    Dim i AS Long
 '   Dim Pulsante As OLEObject
    
'    Application.ScreenUpdating = False
    'Copio Foglio
'    ActiveSheet.Copy
    'scelgo dove salvare il nuovo file ed il nome + estensione da assegnargli
 '   Application.Dialogs(xlDialogSaveAs).Show
    
    'rimuovo le formule e lascio solo i valori
    oSel = ThisComponent.getCurrentSelection()
    oSheet = ThisComponent.getCurrentController().getActiveSheet()
'    Set RngEsaminato = ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
    RngEsaminato = oSel.queryContentCells( 16 )
    
    For Each Cella In RngEsaminato
        oSheet.getCellByPosition(Cella.getCellAddress.Column, Cella.getCellAddress.Row).Value = Cella.Value
    Next Cella
   
    DrawPage = oSheet.DrawPage
    For i = 0 to DrawPage.Count - 1 Step - 1
        Shape = DrawPage(i)
        DrawPage.remove(Shape)
    Next
End Sub

PS: La parte di macro per la cancellazione delle formule lavora sulla selezione corrente, quindi devi selezionare la colonna con le formule oppure modificare la macro, questo lo lascio fare a te.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Tuoangelo
Messaggi: 12
Iscritto il: venerdì 21 maggio 2021, 21:35

Re: Estrapolare un singolo foglio da "X fogli" e salvarlo in

Messaggio da Tuoangelo »

Grazie mille Gaetanopr,
proverò a fare come dici tu e vi farò sapere.
LibreOffice 7 su Windows 10
Rispondi