Unire sheets

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
gianluca136
Messaggi: 11
Iscritto il: mercoledì 3 dicembre 2014, 15:07

Unire sheets

Messaggio da gianluca136 »

Buongiorno,
dovrei riunire sotto la stessa pagina tutti gli sheet del file in questione. Trattasi di piu di 200 sheets per cui eviterei un copia ed incolla manuale.
Grazie anticipatamente
Allegati
licencia ciutat vella (1).ods
(124.76 KiB) Scaricato 96 volte
Open office 4.0.1
sistema operativo windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Unire sheets

Messaggio da Gaetanopr »

Ti occorre una macro.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
gianluca136
Messaggi: 11
Iscritto il: mercoledì 3 dicembre 2014, 15:07

Re: Unire sheets

Messaggio da gianluca136 »

accidenti....sembra qualcosa di complicato...sapresti indicarmi delle piattaforme online che convertono file di grandi dimensioni da PDF in ODS?
Open office 4.0.1
sistema operativo windows 7
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Unire sheets

Messaggio da Gaetanopr »

La macro in questo caso è abbastanza semplice, per prima cosa devi abilitare il programma alle macro andando su Strumenti - Opzioni - Sicurezza - Sicurezza delle macro - imposti a medio, ad ogni apertura del file ti comparirà una finestra dove dovrai selezionare il pulsante Abilita macro.

Dai un'occhiata a questa breve guida dove potrai iniziare a familiarizzare con il mondo delle macro.http://www.plio.it/sites/default/files/ ... _Macro.pdf

Questa è la macro che ti occorre, la prima parte accoda i dati dal secondo all'ultimo foglio sul primo, in seguito li elimina tutti tranne il primo.
Al momento ho inserito Exit sub a metà routine in modo tale da non eliminare i fogli, se lo togli la macro continua e completa il lavoro con l'eliminazione. Si potrebbe pure inserire un messaggio che ci avvisa e ci chiede se vogliamo eliminare i fogli ma questo lo vediamo dopo se serve.

Codice: Seleziona tutto

Sub Copia
Dim Doc As object, Shs As Object
Dim i As Long

Doc = ThisComponent
Shs = Doc.Sheets
ShPrimo = Shs(0)
c = ShPrimo.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow  
 For i = 1 To Shs.Count -1
  Sh = Shs(i)
  c = Sh.createCursor
  c.gotoEndOfUsedArea(false)
  LastRowShs = c.RangeAddress.EndRow 
  Dati() = Sh.GetCellRangeByPosition(0, 0, 5, LastRowShs).GetDataArray
  ShPrimo.GetCellRangeByPosition(0, LastRow+1, 5, LastRow+1+LastRowShs).SetDataArray(Dati)
  LastRow = LastRow + LastRowShs + 1
 Next i
 
 EXIT SUB 
 REM QUESTA PARTE SE SI VOGLIONO ELIMINARE I FOGLI COPIATI
 For i = Shs.Count - 1 To 1 step - 1
   ShName = Shs(i).Name
       Shs.removeByName(ShName)
 Next i
 
End Sub
PS: La prossima volta allega un file esemplificativo con pochi fogli e non 240!!!! e con dati fittizi.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Rispondi