Importazione .CSV in Calc/macro/personalizzazioni

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Buongiorno, ho da poco ripreparato un pc con Windows 7. Inizialmente ho installato OpenOffice 3.3 in luogo della versione di prova di Office 2010 che mi era stata inserita, in seguito ad alcuni problemi di cui parlerò più sotto ho provveduto a disinstallarla e installare la 3.4, nella remota speranza che i problemi fossero legati alla versione del sw.

Innanzi tutto spiego ciò che ho fatto, poi passerò ai problemi:
-una procedura richiede l'esportazione di una tabella da un gestionale, quest'ultimo non riconosce Calc ma solo Excel e quindi si rende necessario esportare i dati in formato CSV in un file di testo, cosa che di suo non crea alcun problema.
-a questo punto se si fa doppio click sul file di testo, viene lanciato Calc il quale mi presenta una finestra per importare i dati in un nuovo foglio di calcolo. E fino a qui nessun problema, l'importazione avviene alla perfezione.
-quindi devo eliminare dai dati importati svariate colonne, spostarne una, rinominare il titolo di una colonna, formattare testo e numeri... poichè è un'operazione lunga e ripetitiva, e il file importato ha sempre la stessa architettura, già su Excel avevo optato per la registrazione di una macro. Per la precisione, poichè dallo stesso tabulato dovrebbero uscire due diversi fogli di calcolo a seconda delle funzioni, le macro sono due.
-ho scoperto che Calc non registra nelle macro i comandi da mouse, quindi mi sono "ingegnato" a trovare le scorciatoie da tastiera per spostarmi, selezionare le colonne, ecc.
-le macro sono riuscite correttamente, unico problema mi sono scordato di formattare alcune colonne. Poichè il gestionale mi immette in una colonna i codici cliente in formato XXXX123456 (dove XXXX sono un numero di servizio e 123456 il "vero" codice cliente), e in un'altra colonna la data in formato GGMMAA senza spazi, per formattare correttamente i due campi ho optato per creare due formattazioni personalizzate, che risultano ####---###### e ##-##-## (quindi i codici cliente diventano XXX---123456 e la data GG-MM-AA).
-ho ricreato le macro, stavolta utilizzando anche le formattazioni personalizzate, ed è andato tutto bene.
-ho scoperto che le formattazioni personalizzate seguono il file su cui sono state create, in quanto NON standard. Per ovviare a questo problema ho creato un foglio di calcolo vuoto, creato le formattazioni e salvato come modello, quindi l'ho impostato come standard. Ora se apro un nuovo foglio mi include anche le due formattazioni che ho creato.

PROBLEMA 1: tutto ciò è successo ieri. Questa mattina le due macro sono SCOMPARSE. Sinceramente ho un piccolo dubbio se le abbia create PRIMA o DOPO aver disinstallato la 3.3 e installato la 3.4, ma mi pare di averle create a 3.4 installata. Nel dubbio, posso ricrearle.

PROBLEMA 2: questo è di certo il più "grave"... in sostanza le formattazioni personalizzate sono presenti di default in TUTTI i nuovi files ODS o XLS che creo, ma se invece importo il file .CSV in un nuovo foglio, non le prende. Non c'è modo di "dire" a Calc di utilizzare le impostazioni di default ANCHE per i nuovi fogli generati da importazione?

Ringrazio di cuore chi vorrà darmi una mano, è da ieri che ci sto sbattendo la testa... :crazy:
OpenOffice 3.4 su WinXP e Win7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 9027
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da charlie »

Salve,
non sono un esperto di macro ma leggendoti mi è venuta l'idea che potresti aver registrato le macro come "personali" anziché a livello "globale" ....
charlie
macOS 15.5 Sequoia: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

non vedo perché non fai l'esportazione dal gestionale in formato excel che Calc legge benissimo, se non te leggesse allega un esempio, magari te lo legge Libre Office. per il resto, se hai gia una macro in vba che funziona posta anche quella che vediamo di adattarla.
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:non vedo perché non fai l'esportazione dal gestionale in formato excel che Calc legge benissimo, se non te leggesse allega un esempio, magari te lo legge Libre Office. per il resto, se hai gia una macro in vba che funziona posta anche quella che vediamo di adattarla.
Non posso in quanto il gestionale è configurato per APRIRE Excel e riversare i dati. Se Excel non è installato e seleziono l'esportazione in Excel, mi va in errore non trovando l'eseguibile.
Le due macro sono scomparse del tutto, dovrei rifarle.
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

forse sono sparite perché hai salvato il file in formato xls, usa sempre il formato ods
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:forse sono sparite perché hai salvato il file in formato xls, usa sempre il formato ods
Non posso. La maggior parte degli interlocutori usa Office e l'ODS non lo leggerebbero. Purtroppo sono costretto ad usare l'XLS. Tra l'altro, le macro sono salvate a parte nel programma e non dipendono dal formato del singolo file, se non sbaglio...
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

basta che tu provi, registri una macro banale, salvi in xls, chiudi e riapri
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:basta che tu provi, registri una macro banale, salvi in xls, chiudi e riapri
Funziona. Ho registrato una macro ieri per prova, e sta ancora lì...
Comunque quello è il minore dei problemi, oggi riprovo a registrare le macro e poi vediamo se me le cancella nuovamente.
Il problema fondamentale che ho riguarda le formattazioni personalizzate, che ho salvato nel modello utilizzato come default e me le prende SOLO se apro un nuovo file, XLS o ODS che sia... se importo il CSV il foglio di calcolo risultante non contiene le formattazioni personalizzate. Se non risolvo questo problema è inutile che registro le macro (se nella registrazione inserisco le formattazioni personalizzate e poi non me le prende, mi si blocca l'esecuzione della macro stessa...)
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

se insisti ad usare sw libero prova Libre Office 4.0, dovrebbe essere molto più compatibile di OO 3.4
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:se insisti ad usare sw libero prova Libre Office 4.0, dovrebbe essere molto più compatibile di OO 3.4
Provato ad installare LO 4.0 e fatto la prova con Calc. Il problema delle formattazioni personalizzate resta, in più non c'è il tasto "registra macro". Eppure nell'help c'è... :shock:
OpenOffice 3.4 su WinXP e Win7
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Gaetanopr »

Quetzalcoatl ha scritto:
Provato ad installare LO 4.0 e fatto la prova con Calc. Il problema delle formattazioni personalizzate resta, in più non c'è il tasto "registra macro". Eppure nell'help c'è... :shock:
http://forum.openoffice.org/it/forum/vi ... f=9&t=1267
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Risposto anche nel topic specificato, riporto anche qui la soluzione per il tasto di registrazione macro:

In LibreOffice 4.0 il comando è differente:
Strumenti->Opzioni->LibreOffice->Avanzato
Abilitare opzione "Abilita la registrazione di macro"
OpenOffice 3.4 su WinXP e Win7
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Rieccomi... ho provato a risolvere il problema ma finora senza successo.
Ricapitoliamo:
-ho un gestionale che esporta i dati in un file .CSV
-devo creare una macro in cui registrare:
-eliminazioni di colonne non necessarie
-spostamento di una colonna (taglia-incolla)
-regolazione dimensioni colonne e applicazione del grassetto in alcune colonne
-applicazione di DUE semplicissime formattazioni personalizzate, non presenti di default (##-##-## e ####---######)

Ho creato un modello con le due formattazioni personalizzate e salvato come predefinito, ma me lo usa SOLO per nuovi documenti: se apro Calc direttamente le formattazioni ci sono, se apro un file qualunque NO.
Penso che Calc tratti le formattazioni personalizzate come elementi accessori di ogni singolo file, per cui se deve CREARE un file gli applica i contenuti del modello predefinito, se deve aprire un file già creato invece si basa solo sui contenuti del file stesso.
Ho pensato che se apro Calc e importo il CONTENUTO del file CSV, praticamente incollandone il contenuto in un nuovo file, le due formattazioni dovrebbero esserci (essendo il file appena creato da Calc sulla base del modello predefinito). Il problema è che non so come si fa, SE si può fare...
OpenOffice 3.4 su WinXP e Win7
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Meglio ancora, se apro Calc e importo il FOGLIO dal file CSV, le formattazioni rimangono. Ora mi servirebbe solo di creare una macro che faccia questa operazione:
-Inserisci->Foglio da file...
-Il file è un CSV con valori separati da ;
-Importare il Foglio1
That's all...
OpenOffice 3.4 su WinXP e Win7
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Ho trovato questo, che dovrebbe servire per inserire un foglio da un altro file:

Codice: Seleziona tutto

REM  *****  BASIC  ***** 

Sub Main 
REM source document 
Dim sURL$, sLinkSheetName$ 
   sURL = thisComponent.getURL() 
   sLinkSheetName = "Sheet1" 
    
REM target document 
Dim doc, sheets, sName$, pos% 
   doc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_default",0, Array()) 
   sheets = doc.getSheets() 
   sName = getUniqueName(sheets, "Copied") 
   pos = 0 

REM new sheet 
Dim sh 
   sheets.insertNewByName(sName, pos) 
   sh = sheets.getByName(sName) 
    
REM link the new sheet 
   sh.link(sURL, sLinkSheetName, "calc8", "", com.sun.star.sheet.SheetLinkMode.NORMAL) 
    
REM break link 
   sh.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) 
End Sub 

Function getUniqueName(oContainer,sName$) 
Dim i%,sNew$ 
   sNew = sName 
   Do while oContainer.hasByName(sNew) 
      i = i +1 
      sNew = sName &"_"& i       
   loop 
   getUniqueName = sNew 
End Function 
Ma sono totalmente a digiuno di programmazione, quindi non so cosa devo editare per adeguarlo ai miei percorsi e ai nomi dei miei files...
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

allega iltuo csv pe fare qualche prova e indica i percorsi che vuoi utilizzare
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:allega iltuo csv pe fare qualche prova e indica i percorsi che vuoi utilizzare
File allegato. Sia questo file che il file risultante dalle operazioni si trovano sul desktop (usa pure un percorso generico, basta che capisco come modificarlo per adeguarlo alle mie esigenze)
Allegati
ABESP.rar
Scompattare (il forum non mi fa inserire file .CSV)
(1.48 KiB) Scaricato 173 volte
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

Codice: Seleziona tutto

Sub LinkCSV 
Dim Doc as Object, Sheet as Object
   fileName = "C:\Users\Andre\Desktop\ABESP.CSV"
   Doc = thisComponent
   Sheet = Doc.Sheets.getByName("Foglio2")
      sURL = ConvertToURL(fileName)
      sOrigin = ""
      sFilter = "Text - txt - csv (StarCalc)"
      sOpc ="59/44,34,ANSI,1,"
'     sOpc = "ASCII CODE Field Separator, ASCII CODE Text Delimiter, Character Set, Starting Line"
      nModo = com.sun.star.sheet.SheetLinkMode.NORMAL
      ' link file
      Sheet.link(sURL, sOrigin, sFilter, sOpc, nModo)
      ' reset link
      Sheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

OK, ho cambiato la destinazione per adeguarla al mio desktop... ma ho provato ad eseguire la macro e mi dice:

Codice: Seleziona tutto

Errore di runtime BASIC.
Proprietà o metodo non trovati: Sheets.
Mi si blocca alla 5° riga, quella che dice "Sheet = Doc.Sheets.getByName("Foglio2")"
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

prova con
Sheet = Doc.Sheets(0)
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

patel ha scritto:prova con
Sheet = Doc.Sheets(0)
Funziona! Ottimo, hai salvato la mia sanità mentale grazie :bravo:
OpenOffice 3.4 su WinXP e Win7
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Ho notato una cosa... la colonna IMPORTO me la tronca dei decimali, importandomi solo il valore intero... come posso fare per evitare questa cosa?
OpenOffice 3.4 su WinXP e Win7
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da patel »

prova

Codice: Seleziona tutto

      sOpc = "59, , , ," 
invece di

Codice: Seleziona tutto

      sOpc = "59/44,34,ANSI,1,"
-------------------
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
Quetzalcoatl
Messaggi: 15
Iscritto il: mercoledì 20 febbraio 2013, 15:43

Re: Importazione .CSV in Calc/macro/personalizzazioni

Messaggio da Quetzalcoatl »

Grazie mille, di nuovo :super:
OpenOffice 3.4 su WinXP e Win7
Rispondi