Te regreso la macro
Private Sub CommandButton3_Click()
Dim wksH As Worksheet
Dim intFich As Integer, lngNumReg As Long, strCad As String
Dim lngContL As Long, intContC As Integer, n As Long
Set wksH = Worksheets("Hoja1") 'Hoja donde están los datos
intFich = FreeFile(0)
lngContL = 2 'Se empezará a exportar en la fila 2 (se entiende que la 1ª es de títulos)
intContC = 7 'Se exportarán las columnas 1 a 3
'If Dir("C:\0621.esper.feder.PI.txt") <> "" Then Kill ("C:\0621.esper.feder.PI.txt") 'Si ya existe C:\Fichero.txt, lo borra.
'Open "C:\0621.esper.feder.PI.txt" For Output As intFich
If Dir("C:\PI.txt") <> "" Then Kill ("C:\0621.esper.feder.PI.txt") 'Si ya existe C:\Fichero.txt, lo borra.
Open "C:PI.txt" For Output As intFich
While Not IsEmpty(wksH.Cells(lngContL, 1))
For n = 1 To intContC
Select Case n
Case 1
strCad = strCad & wksH.Cells(lngContL, n) & "|"
Case 2
strCad = strCad & Format(wksH.Cells(lngContL, n), "000") & "|"
Case 3
strCad = strCad & Format(wksH.Cells(lngContL, n), "000000") & "|"
Case 4
strCad = strCad & Format(wksH.Cells(lngContL, n), "0.00") & "|"
Case 5
strCad = strCad & Format(wksH.Cells(lngContL, n), "0.00") & "|"
Case Else
strCad = strCad & wksH.Cells(lngContL, n) & "|"
End Select
Next n
strCad = Left(strCad, Len(strCad) - 1) 'Para quitar el último delimitador por la derecha
Print #intFich, strCad
lngContL = lngContL + 1
strCad = ""
Wend
Close intFich
Set wksH = Nothing
End Sub
Prueba y me comentas
Saludos. DAM
Si es lo que necesitas.