[Risolto] Macro riepiloga riga di tutti file in una cartella

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
ElPube
Messaggi: 15
Iscritto il: lunedì 19 febbraio 2018, 14:45

[Risolto] Macro riepiloga riga di tutti file in una cartella

Messaggio da ElPube »

Salve a tutti, utilizzo da poco OpenOffice e inizio ad incontrare le prime difficoltà.

Ho la necessità di raccogliere in elenco in un file riepilogo tutte le righe 2 di tutti i file (nomi diversi, struttura uguale) contenuti nella stessa cartella del file riepilogo.

Qualcuno saprebbe indicarmi una macro per questo? Ho cercato nel forum ma anche se c'è qualcosa di simile l'adattamento alla mia semplice esigenza non è per me poi così semplice... :shock:
Ultima modifica di ElPube il mercoledì 21 febbraio 2018, 8:40, modificato 1 volta in totale.
OpenOffice 4.1.5 su Windows 10
Avatar utente
gioh66
Volontario
Volontario
Messaggi: 1721
Iscritto il: lunedì 31 luglio 2017, 14:57
Località: Friuli

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da gioh66 »

Buondì io non saprei suggerirti macro, ma temo che anche chi ha familiarità non saprebbe aiutarti senza un file d'esempio. Postane uno ripulito da dati sensibili.
...se sei soddisfatto delle risposte ricevute metti il [Risolto] https://forum.openoffice.org/it/forum/v ... f=9&t=5661

Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
ElPube
Messaggi: 15
Iscritto il: lunedì 19 febbraio 2018, 14:45

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da ElPube »

Grazie del suggerimento.

La mia cartella contatti contiene i file dei contatti il cui nome e numero è impossibile prevedere, ma di cui mi interessa raccogliere in elenco le informazioni della riga 2 (dati contatto 1.ods ne è un esempio).

Questo elenco riepilogativo sarebbe pratico che venga generato all'occorrenza in un file separato (riepilogo contatti.ods) in modo da generare l'elenco delle righe 2 di tutti i file contatti in quel momento presenti.

Questa è la problematica principale, per evitare di aprire "a mano" e copiare e incollare le informazioni da unire.
Allegati
riepilogo contatti.ods
(10.31 KiB) Scaricato 116 volte
dati contatto 1.ods
(10.08 KiB) Scaricato 121 volte
OpenOffice 4.1.5 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da patel »

prova questa macro, il file riepilogo non deve risiedere nella cartella con i file da leggere

Codice: Seleziona tutto

Sub ApriDoc_InFolder
Dim DocName as object, DocUlr as string, dummy()
doc = ThisComponent
sh = doc.Sheets(0)
sPath ="F:\Download\"  ' <<<<<<<<< cartella con i file
sFileName = Dir(sPath & "*.ods", 0)
dr = 1
Do While (sFileName <> "")
  sFileName = Dir() ' <<<<<<<<<<<<< riga da spostare in basso prima di Loop
  DocUrl = ConvertToURL(sPath & sFileName)
  DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
  Range =Docname.Sheets(0).getCellRangeByPosition(0,1, 8, 1).getDataArray
  dRange  = Sh.getCellRangeByPosition(0,dr, 8, dr)
  dRange.setDataArray(Range) 
  dr = dr + 1  
  DocName.close(true) 
Loop
End Sub

Ultima modifica di patel il lunedì 19 febbraio 2018, 20:12, modificato 1 volta in totale.
-------------------
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
ElPube
Messaggi: 15
Iscritto il: lunedì 19 febbraio 2018, 14:45

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da ElPube »

Ciao,

mi sembra la via giusta...però ci sono 2 problemi:
- importa solo il primo file (errore in allegato), forse perché la cartella ha delle sottocartelle al suo interno?
- come faccio a specificare di importare le righe dal secondo foglio che ha nomi diversi in tutti i file?

Grazie cmq...
Allegati
err macro.png
OpenOffice 4.1.5 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da patel »

l'errore dipende dal fatto che la cartella ha delle sottocartelle, non ci devono essere.
se la riga deve essere del secondo foglio modifica la riga

Codice: Seleziona tutto

  Range =Docname.Sheets(0).getCellRangeByPosition(0,1, 8, 1).getDataArray
in

Codice: Seleziona tutto

  Range =Docname.Sheets(1).getCellRangeByPosition(0,1, 8, 1).getDataArray
-------------------
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
ElPube
Messaggi: 15
Iscritto il: lunedì 19 febbraio 2018, 14:45

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da ElPube »

E' quasi perfetta!

Li importa tutti tranne uno, stesso errore...eppure ora ci sono solo file .ods

Già così è una salvezza, grazie!
Devo solo capire quale file esclude ogni volta e aprirlo a mano.
OpenOffice 4.1.5 su Windows 10
patel
Volontario attivo
Volontario attivo
Messaggi: 4019
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da patel »

prova questa

Codice: Seleziona tutto

Sub ApriDoc_InFolder
Dim DocName as object, DocUlr as string, dummy()
doc = ThisComponent
sh = doc.Sheets(0)
sPath ="F:\Download\A\" 
sFileName = Dir(sPath & "*.ods", 0)
dr = 1
Do While (sFileName <> "")
  DocUrl = ConvertToURL(sPath & sFileName)
  DocName = StarDesktop.loadComponentFromURL (DocUrl, "_blank",0, Dummy() )
  Range =Docname.Sheets(1).getCellRangeByPosition(0,1, 8, 1).getDataArray
  dRange  = Sh.getCellRangeByPosition(0,dr, 8, dr)
  dRange.setDataArray(Range) 
  dr = dr + 1  
  DocName.close(true) 
  sFileName = Dir()
Loop

End Sub
-------------------
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
ElPube
Messaggi: 15
Iscritto il: lunedì 19 febbraio 2018, 14:45

Re: Macro riepiloga riga di tutti i file in una cartella

Messaggio da ElPube »

E ora ci sono tutti!

Grazie :D
OpenOffice 4.1.5 su Windows 10
Rispondi