Newsgroup: it.comp.lang.visual-basic
Titolo: Apertura file Excel formato testo delimitato

Salve
Ho creato una specie di browser che ricerca dei file che poi deve aprire. I
files sono Excel formattato come file di testo delimitato (.csv). Se apro
direttamente il file con ShellExecute questo si apre ma non mi rispetta i
delimitatori, (non ho mai capito perchè se apro prima Excel e dall'interno
di questo apro un .csv questo si apre correttamente, mentre se clicco
direttamente sul file questo si apre ma non mi rispetta i delimitatori, e
quindi mi incasina le celle). Per far funzionare il tutto in Excel devo
rinominare il file da .csv a .txt quindi usare il seguente codice VBA all
interno di Excel:
OpenWork = nomefile.txt
Workbooks.Open nomefile.txt, , , 6, , , , , ";"
Workbooks.OpenText FileName:=nomefuile.txt, Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _
ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
, Space:=False, Other:=False, OtherChar:=";"
E' possibile da VB impartitire gli stessi comandi per far si che Excel li
esegua e mi apra i files correttamente? O potreste indicarmi un altro metodo
pewr ottenere lo stesso risultato.
Grazie 1 K per l'help

 Semicolon:=True, Comma:=False
Per quanto ne so, i file .csv sono separati con virgola.
Quelli col punto e virgola non sono veri csv, per cui Excel non trova il
delimitatore.
Se invece rinomini con .txt, allora puoi dirgli quello che vuoi.
Chi è che genera i .csv? Una tua applicazione? Allora basta sistemare le
cose. Un'applicazione di qualcun altro? Allora non vedo altro che la macro
che già utilizzi...
Alberto


La macro è una macro di Excel fatta in VBA che ho utilizzato per altri scopi
esclusivamente in Excel, che però non posso utilizzare (presumo) con il mio
browser perché quest'ultimo e fatto con VB6.
I file .csv sono dei report di paramenti ambientali, un totale di sette file
al giorno per ogni giorno dell'anno. Il browser mi serve per visualizzare il
report di un singolo parametro di un determinato giorno con il tutto
masterizzato su di un CD da portare in giro per il mondo in mano a persone
non esperte di informatica. Mi servirebbe quindi che il file si aprisse
correttamente dal browser senza ulteriori operazioni da parte dell'utente
finale, con l'unica condizione di aver installato Excel sul computer
utilizzato.

 utilizzato.
Allora, la situazione è questa.
I file che tu hai sono nominati CSV, ma in realtà non sono dei CSV.
Excel vuole dei CSV. Altri formati non standard devono essere specificati
come tu correttamente hai fatto, ossia con macro che indichino il
separatore, ecc...
Se tu vuoi che i tuoi file vengano aperti da un Excel standard, devi fare
una piccola applicazione che prenda il tuo file 'finto csv' e lo modifichi
in un vero csv, verificando che nei campi testo non ci siano virgole, se ci
sono inserendo gli apici come separatori di testo o sostituendo le virgole
con altri caratteri, e infine sostituendo i punti e virgola di separazione
con delle virgole.
Non vedo altre soluzioni.
Alberto

Due domande per capire meglio:
1) Perchč i miei file csv che non sono csv se li apro da "dentro" Excel si
aprono perfettamente anche se hanno i separatori punto e virgola, mentre se
ci clicco sopra da esplora risorse non si aprono correttamente (l'icona e
quella di Excel con la x piccola e la a,) ?
2) Non esiste nessun sistema per impartire comandi VBA ad Excel da VB?
Per quanto riguarda l'applicazione di trasformazione non credo sia fattibile
(o comunque facile da fare) in quanto i files sono piuttosto pesantini un
record di quattro valori + orario ogni 10 min per 24 ore + intestazioni
varie.
Grazie ancora

 varie.
Sei record all'ora per 24 ore fanno 144 record, quindi una cosa pressochč
ridicola per un PC qualunque.
Alberto

 
In realtà non è proprio così, la cosa è più subdola.
Se clicchi su un file .csv, excel parte e riesce a leggerlo solo se come
separatore viene usata la virgola.
Se apri il file da dentro excel, questi riesce a leggerlo solo se come
separatore viene usato il carattere definito come separatore di elenco
nelle impostazioni internazionali.
Lo stesso carattere separatore di elenco viene utilizzato per separare i
valori se si salva un foglio in formato .csv.
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/news/