Excel di suo gestisce un tot di formati dati; per altri formati fornisce formule per compilare una stringa a piacere e un linguaggio di programmazione per fare altrettanto in modo programmatico.
Cio' detto, una macro come questa consente di scrivere campi usando un separatore a piacere:
- Codice: Seleziona tutto
Sub Piped()
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=106577
Dim myCols As Range, myRan As Range, I As Long, J As Long, SeP As String
Dim myFile As Long, myRow As String
'
Set myCols = Range("A1:F1") '<<< Le colonne da "stampare", in questo formato
SeP = " | " '<<< Il separatore da usare
'
Set myRan = Application.Intersect(ActiveSheet.UsedRange, myCols.Resize(Rows.Count))
myFile = FreeFile
Open "C:\prova\mioFile.txt" For Output As #myFile '<<< Path e NomeFile
'
For I = 1 To myRan.Rows.Count
myRow = ""
For J = 1 To myRan.Columns.Count
Select Case J
Case 1 'VEDI TESTO
myRow = myRow & Format(Cells(I, J).Value, "hh:mm:ss") & SeP
'altri Case secondo il bisogno
'
Case Else
myRow = myRow & Cells(I, J).Value & SeP
End Select
Next J
Print #myFile, Left(myRow, Len(myRow) - Len(SeP))
Next I
Close #myFile
End Sub
Le righe marcate <<< vanno adattate al tuo caso.
C'e' da ricordare che alcuni campi excel potrebbero essere scritti in modo "criptico" nel file di output; ad esempio gli orari saranno riportati come numero decimale.
Per gestire a piacere il formato di questi campi ho abbozzato una struttura Select Case J /End Select. Poiche' J rappresenta il numero di colonna, e' possibile trattare in modi diversi le varie colonne; ad esempio con " Case 1" ho simulato che in colonna A ci sia un orario che quindi vado a formattare come hh:mm:ss prima di scrivere quel valore nel file. Userai altri Case n per formattare in modo appropriato le colonne del tuo foglio.
Quanto alle "colonne da stampare", quanto definito puo' servire a limitare "l'area di stampa"; se vuoi stampare tutte le colonne compilate allora imposta un intervallo abbastanza largo, ad esempio "A1:IV1" (256 colonne).
Ciao