Originariamente inviato da Disastro
Ciao ragazzi
Mi servirebbe una funzione per prendere dei dati da un file di testo scritto così:
codice:
parametro1: valore1
parametro2: valore2
parametro3: valore3
parametro4: valore4
parametro5: valore5
parametro1: valore1
parametro2: valore2
parametro3: valore3
parametro4: valore4
parametro5: valore5
.....
ed inserirli in un file excel che abbia per intestazione:
parametroEx1 | parametroEx2 | parametroEx3 | parametroEx4 | parametroEx5
Parametro di testo corrisponde sempre allo stesso parametroExcel, ma non nell'ordine: es. parametro1 corrisponde sempre a parametroEx3 e così via.
Spero di essere stato chiaro. Purtroppo non posso usare il wizard d'importazione perchè l'"a capo" viene inteso come nuovo record...
Qualche anima pìa mi scriverebbe qualche linea di codice che almeno mi guidi nella stesura della funzione??
Grazie in anticipo
Ciao !
Ho provato a fare un foglio xls con un pulsante che esegue quanto richiedi...
Il codice presuppone che il file "Dati.txt" sia nella stessa directory del foglio Excel (non dovresti avere difficolta' ad adattarlo alle tue necessita').
L'ho provato con questi dati, e funziona (se ho bene interpretato le tue richieste):
codice:
parametro1: valore1
parametro2: valore2
parametro3: valore3
parametro4: valore4
parametro5: valore5
parametro1: valore11
parametro2: valore22
parametro3: valore33
parametro4: valore44
parametro5: valore55
parametro1: valore1100
parametro2: valore2200
SGRUNT: vedo solo ora che non si possono allegare file .xls...
Questo e' il codice, devi solo mettere un CommandButton (nome: cmdImporta) su un foglio:
codice:
Option Explicit
Const Npar As Integer = 5 'numero parametri
Private Sub cmdImporta_Click()
Dim i As Integer, L As String, P As String, V As String
Dim d As Integer, c As Integer, N As Integer
Range("B2:Z99").ClearContents 'pulisce la tabella dati e i contatori
Open ActiveWorkbook.Path & "\Dati.txt" For Input As #1
Do
Line Input #1, L
L = Trim$(L) 'elimina gli eventuali spazi
d = InStr(1, L, ":") 'cerca separatore in "par:valore"
If d Then
P = LCase$(Left$(L, d - 1)) 'parametro, convertito in minuscolo
V = Mid$(L, d + 1) 'valore
'seleziona la colonna Excel in base al parametro (in minuscolo)
Select Case P
Case "parametro1": c = 2 'qui devi impostare la TUA corrispondenza tra par e parEx
Case "parametro2": c = 3
Case "parametro3": c = 4
Case "parametro4": c = 5
Case "parametro5": c = 6
Case Else
'cosa facciamo se il parametro non corrisponde a nessuno ?
c = 7 'mettiamolo in una colonna a parte, va'....
End Select
N = Cells(2, c) 'numero di valori finora rilevati
N = N + 1 'incrementa il progressivo
Cells(2, c) = N 'e riportalo sul foglio
Cells(N + 2, c) = V 'con il corrispondente valore
Else
'non ci sono i ":" quindi non considero la riga
End If
Loop Until EOF(1) 'finche' non e' finito il file
Close #1
End Sub
prova un po', se puo' esserti utile....