Ciao Flash,
la macro dopo qualche modifca irrilevante fa il suo dovere
- Codice: Seleziona tutto
If M214 > 13 Then
For MF = Len(M214) To 12
ho dovuto invertire qui il segno < con >, poi qualche 0 e uno spazio, comunque niente di che..
inoltre il prodotto tra la colonna C e E (C * E) è corretto?
si questo è corretto cosi..
Ma oltre alla colonna F quali altre colonne hanno una descrizione (addirittura che potrebbe superare 30 caratteri)?
In realtà qui mi riferivo al fatto che comunque tutti i campi dovrebbero avere un controllo sulla lunghezza..sia in difetto che in eccesso...per esempio se nella colonna P inserisco 1000% avrei come risultato nel tracciato +1000,00 superando di una carattere il capo record...non so se mi sono spiegato..
Aggiungo che, per migliorare l'archiviazione dei file testo
(e anche per non sovrascrivere il file ad ogni avvio di macro proveniente da file diversi),
forse è opportuno assegnargli un nome che corrisponda al foglio di origine.
Per fare questo è sufficiente che sostituisci la "variabile" MioFileTxt invece di "Pippo" con questa riga codice
dopo aver letto qualcosa avevo usato questo codice
- Codice: Seleziona tutto
Sub CreaTxt()
Dim scn As String
Perc = ThisWorkbook.path & "/"
scn = Application.GetSaveAsFilename(InitialFileName:=nome_file, fileFilter:="Testo Unicode, *.txt")
If scn = "Falso" Then Exit Sub
ultima cosa a livello didattico, sono riuscito con le formule a "quasi" completare la funzione
- Codice: Seleziona tutto
="2"&STRINGA.ESTRAI(A6&RIPETI(" ";13);2;13)&SINISTRA(F6&RIPETI(" ";30);30)&"+"&CONCATENA(RIPETI(0;7-LUNGHEZZA(C6)); C6)&",00"&"+"&CONCATENA(RIPETI(0;7-LUNGHEZZA(E6)); E6)&",00"&"+"&CONCATENA(RIPETI(0;9-LUNGHEZZA(C6*E6)); C6*E6)&",00"&"+"&CONCATENA(RIPETI(0;12-LUNGHEZZA(O6)); O6)&"+"&CONCATENA(RIPETI(0;3-LUNGHEZZA(P6*100)); P6*100)&",00"&"+"&"000,00"&"+"&"000000000,00"&"22"&SINISTRA(B6&RIPETI(" ";13);13)
solo che non riesco a superare il problema della colonna O, nel senso che se il prezzo è 12.22 è ok ma se finisce con gli 00 la formula non va bene. Grazie per tutto.