Pasar a txt con espacios determinado

Hola, espero poder explicar bien mi problema. Tengo una tabla en access llamada Datos, con los campos codEstacion, dia08, fecha, año, latitud, longitud, altitud, tmax, tmin. Esta tabla contiene datos diarios del año 2008, el código que te pongo a a continuación, lo que hace es coger crear una carpeta correspondiente al año, en este caso 2008, luego crea otra carpeta dentro de esta que corresponde a TMAX, dentro de la cual se va almacenar archivos txt que se obtendrán como salida, estos van a coorresponder a valores de 12 en 12 de TMAX para cada codestacion formándose así los archivos de cada 12dias hasta terminar el año.
Public Sub Command0_Click()
Dim lngFichero As Long
Dim strFichero, carpetaA, carpetaB As String
Dim MiRS As DAO.Recordset 'Variable de recordset
Dim sRegistro As String 'Para guardar los datos
Dim sql, sq As String
Dim strCodestacion As String
Dim i, j As Integer
Dim fs
'Crear carpeta
Set fs = CreateObject("Scripting.FileSystemObject")
carpetaA = fs.CreateFolder("D:\Clima\2008")
carpetaB = fs.CreateFolder("D:\Clima\2008\TMAX")
j = 0
For i = 1 To 18
strFichero = carpetaB
'crear nombre de los archivos txt de salida
strFichero = strFichero & "\TMAX" + Trim(Str(i)) + ".txt"
'Crear una consulta con la tabla
sql = "SELECT * FROM Datos order by codestacion, dia08"
Set MiRS = CurrentDb.OpenRecordset(sql, dbOpenForwardOnly)
lngFichero = FreeFile(1)
strCodestacion = ""
sRegistro = ""
' Abrir las carpetas y generar los archivos
Open strFichero For Output As #lngFichero
    Do While Not MiRS.EOF
        If Val(MiRS("dia08")) >= ((12 * j) + 1) And Val(MiRS("dia08")) <= (12 * i) Then
                If strCodestacion = Trim(MiRS!Codestacion) Then
                         sRegistro = sRegistro + Space(3) + Format(Trim(MiRS!tmax), "##.00", 3)
                         If Val(MiRS("dia08")) = (12 * i) Then
                            Print #lngFichero, Format(sRegistro, "##.00")
                         End If
                Else
                     If strCodestacion = "" Then
                         strCodestacion = Trim(MiRS!Codestacion)
                         Print #lngFichero, Format(strCodestacion, "000###") + Space(3) + Format(Trim(MiRS!Lat), "##.0000") + Space(3) + Format(Trim(MiRS!Lon), "##.0000") + Space(3) + Trim(MiRS!Altitud)
                         sRegistro = Format(Trim(MiRS!tmax), "##.00")
                     Else
                         strCodestacion = Trim(MiRS!Codestacion)
                         sRegistro = Format(Trim(MiRS!tmax), "##.00")
                         Print #lngFichero, Format(strCodestacion, "000###") + Space(3) + Format(Trim(MiRS!Lat), "##.0000") + Space(3) + Format(Trim(MiRS!Lon), "##.0000") + Space(3) + Trim(MiRS!Altitud)
                     End If
                End If
        End If
        MiRS.MoveNext
    Loop
j = j + 1
Close #lngFichero
        MiRS.Close
        Set MiRS = Nothing
Next i
End Sub
El programa funciona bien pero ahora necesito que la salida sea más ordenada es decir que en el archivo txt los valores respeten el lugar de las unidades, decenas y centenas. Es decir mis valores salen de este modo:
365 15.236 12.369 639 'Corresponde Codestacion, latitud, longitud y altitud
12 23 36 56 89 74 5 6 98 15 22.3 1.9 '12 valores de TMAX
15368 15.126 10.369 739
1.26 12 65 6 9.23 17 15 16.23 81 15 2.3 17
Como puedo hacer para que la salida sea ordenada como esta:
    365 15.236 12.369 639
12 23 36 56 89 74 5 6 98 15 22.3 1.9
15368 15.126 10.369 739
  1.26 12 65 6 9.23 17 15 16.23 81 15 2.3 17
Espero me puedas ayudar, gracias!
Respuesta
1
La verdad es que no he trabajado mucho con archivos de texto, pero se me ocurre que podrías determinar primero que valor tiene más caracteres, y así poder agregar ceros a la izquierda de los que tenga un largo menor que la cadena más larga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas