di renos » 18/05/09 13:56
Cerco di spiegarmi meglio.
Ho una cartella in cui vi sono parecchi file csv (una settantina) in cui i dati sono organizzati in diverse colonne di cui mi interessa solo la prima (questi file non li posso modificare e me li devo tenere così come mi vengono passati).
Ho un altro file xls composto da tanti fogli quanti sono i suddetti file csv più uno “dati” in cui ho gli elenchi che mi servono per il combobox (nomi dei file csv e dei fogli)
Devo copiare i dati dai file csv ai fogli corrispondenti nel file xls nel modo più automatizzato possibile, onde limitare al massimo gli errori umani.
Ho pensato di usare una semplice maschera che si aprisse all’apertura del file xls composta da un combobox contenente l’elenco dei file csv, un pulsante di “inserimento” dati ed uno di chiusura della maschera stessa.
Dal combobox scelgo il nome del file csv che mi interessa e col pulsante “inserimento” avvio la procedura di copia e incolla o ,comunque, di aggiornamento dati.
1)non voglio che si debbano aprire i file di origine (csv)
2)dalle prove effettuate, per incollare o aggiornare i dati occorre attivare il relativo foglio: non ci deve essere possibilità di errore (incollare su un altro foglio rimasto attivo o non incollare un bel niente)
3)i problemi che avevo riscontrato dipendevano proprio dall’attivazione “casuale” dei fogli
4)per quanto riguarda la variabile x, relativa ai nomi dei fogli, pensavo di utilizzare un “cerca verticale” legato ad y, nel foglio “dati” in cui ho i nomi dei file csv ed a fianco il relativo nome del foglio in cui incollare i dati.
Per ora ho fatto così
Private Sub Inserimento_Click()
On Error Resume Next
Dim x, y
y = ComboBox1.Text ‘nome del file a cui connettersi
x = Sheets("dati").Range("B2") ‘nome del foglio in cui copiare i dati, pensando di usare “cerca
verticale” direttamente sul foglio di excel col risultato in B2
Sheets(x).Activate
With Sheets(x).QueryTables.Add(Connection:= _
"TEXT;C:\cartella\" & y _
, Destination:=Range("A2:A307"))
.Name = y & "_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Come ho già detto non mi piace un granchè….
Grazie per l'aiuto