HOLA!!!
Me agrada tu proyecto.
Me comi la cabeza y llegue a este resultado que reduce 10 o mas veces el tiempo de tu funcion.
Supuse que archivo RUTS.txt no es necesario.
Pero si lo queres, agrega este codigo entre el Close #2 y el Close #1 del final
Espero que te sirva mucho. Igual mi codigo se puede optimizar 80 mil veces mas. pero para eso estan los Cracks de este foro. Yo hago lo que puedo por ayudar.
Pero estoy seguro que tiene que tardar mucho menos asi.
P.D: Modifica el largo de los vectores a tu gusto pero ojo que hay un par de for que usan ese largo escrito, lo vas a tener que cambiar a mano.
GRACIAS POR LEER!!!
Me agrada tu proyecto.
Me comi la cabeza y llegue a este resultado que reduce 10 o mas veces el tiempo de tu funcion.
Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim RUT(99999) As String
Dim MONTO(99999) As Integer
Dim INICIO(99999) As String
Dim MEDIO(99999) As String
Dim a As String
Open App.Path & "\ARCHIVO_BASE.TXT" For Input As #1
Do Until EOF(1)
Line Input #1, a
Y = Y + 1
FLAG = True
For X = 1 To Y
If Mid$(a, 58, 9) = RUT(X) Then
FLAG = False
MONTO(X) = MONTO(X) + Mid$(a, 35, 8)
End If
Next
If FLAG = True Then
RUT(Y) = Mid$(a, 58, 9)
MONTO(Y) = Mid$(a, 35, 8)
INICIO(Y) = Mid$(a, 1, 34)
MEDIO(Y) = Mid$(a, 43, 15)
Else
Y = Y - 1
End If
Loop
' #############################BORRO ARCHIVO_FINAL.TXT####################
Open App.Path & "\ARCHIVO_FINAL.TXT" For Output As #2
Close #2
' #############################BORRO ARCHIVO_FINAL.TXT####################
Open App.Path & "\ARCHIVO_FINAL.TXT" For Append As #2
Dim MONTOB As String 'PARA ESCRIBIR CON LOS CEROS
For X = 1 To ubound(RUT)
If RUT(X) = "" And MONTO(X) = 0 Then Exit For
MONTOB = Right("00000000" & MONTO(X), 8)
Print #2, INICIO(X) & MONTOB & MEDIO(X) & RUT(X)
Next X
Close #2
Close #1
End Sub
Supuse que archivo RUTS.txt no es necesario.
Pero si lo queres, agrega este codigo entre el Close #2 y el Close #1 del final
Código (vb) [Seleccionar]
' #############################BORRO RUTS.TXT####################
Open App.Path & "\RUTS.TXT" For Output As #2
Close #2
' #############################BORRO RUTS.TXT####################
Open App.Path & "\RUTS.TXT" For Append As #2
For X = 1 To ubound(RUT)
If RUT(X) = "" Then Exit For
Print #2, RUT(X)
Next X
Close #2
Espero que te sirva mucho. Igual mi codigo se puede optimizar 80 mil veces mas. pero para eso estan los Cracks de este foro. Yo hago lo que puedo por ayudar.
Pero estoy seguro que tiene que tardar mucho menos asi.
P.D: Modifica el largo de los vectores a tu gusto pero ojo que hay un par de for que usan ese largo escrito, lo vas a tener que cambiar a mano.
GRACIAS POR LEER!!!