Cargar txt a access desde vba
Hace un par de meses empecé a usar access para manejar una BD y de a poco fui aprendiendo SQL y algo de VBA.
Mi problema es el siguiente quiero automatizar la carga de datos (la BD es de un sistema de cobranzas) el banco realiza los cobros de los socios por nosotros y nos envía un .txt con los números de los códigos de barra con la forma xxxyyyzzz donde por y o z tienen que ir cada uno a un campo distinto. Por otro lado en el nombre del archivo esta la fecha de cobro de todos los pagos que registra el txt, esa fecha debería ir en cada uno de los registros que se crean.
Hasta ahora he hecho esto para cargar los datos:
Sub Carga()
Dim strlinea As String
Dim strcamp1 As String
Dim strcamp2 As String
Dim strcamp3 As String
Open "c:\lalala.txt" For Input As #1
While Not EOF(1)
Line Input #1, strlinea
strcamp1 = Mid(strlinea, 1, 3)
strcamp2 = Mid(strlinea, 4, 3)
strcamp3 = Mid(strlinea, 7, 3)
CurrentDb.Execute ("INSERT INTO [Tabla1](camp1,camp2,camp3) VALUES ('" & strcamp1 & "','" & strcamp2 & "','" & strcamp3 & "')")
Wend
Close #1
End Sub
Ese programa me anda perfecto pero me faltan 2 cosas:
1: Cargar la fecha que trae el nombre
2: Para hacer la carga más simple quisiera (si es que se puede) que cada vez que corra el módulo lea todos los txt de una carpeta especificada y los mande a otra carpeta (así no los carga dos veces)
Mi problema es el siguiente quiero automatizar la carga de datos (la BD es de un sistema de cobranzas) el banco realiza los cobros de los socios por nosotros y nos envía un .txt con los números de los códigos de barra con la forma xxxyyyzzz donde por y o z tienen que ir cada uno a un campo distinto. Por otro lado en el nombre del archivo esta la fecha de cobro de todos los pagos que registra el txt, esa fecha debería ir en cada uno de los registros que se crean.
Hasta ahora he hecho esto para cargar los datos:
Sub Carga()
Dim strlinea As String
Dim strcamp1 As String
Dim strcamp2 As String
Dim strcamp3 As String
Open "c:\lalala.txt" For Input As #1
While Not EOF(1)
Line Input #1, strlinea
strcamp1 = Mid(strlinea, 1, 3)
strcamp2 = Mid(strlinea, 4, 3)
strcamp3 = Mid(strlinea, 7, 3)
CurrentDb.Execute ("INSERT INTO [Tabla1](camp1,camp2,camp3) VALUES ('" & strcamp1 & "','" & strcamp2 & "','" & strcamp3 & "')")
Wend
Close #1
End Sub
Ese programa me anda perfecto pero me faltan 2 cosas:
1: Cargar la fecha que trae el nombre
2: Para hacer la carga más simple quisiera (si es que se puede) que cada vez que corra el módulo lea todos los txt de una carpeta especificada y los mande a otra carpeta (así no los carga dos veces)
1 respuesta
Respuesta de santiagomf
-1
Soy novata, he utilizado este código en Access, pero en la linea Set rs= CurrentDb().OpenRecordset(nomTabla) me arroja: Error 13 En tiempo de ejecución"No coinciden los tipos", todos los campos de la tabla access son del tipo texto, en su código determino por ejemplo en rs!sistemaCta = miraValorEntero(Mid$(linea, 1, 2)) cuando el campo es entero o fecha. Pero en la base Access son todos del tipo texto. - Monica Beatriz Lattanzio
¿Qué tipo estoy poniendo mal el de la base access o el del código VBA que ud recomienda?, el archivo excel contiene numeros y letras.Mil gracias - Monica Beatriz Lattanzio
Hola, quizás el tipo de archivo que vas a leer, pues estas funciones son para leer archivos de texto, no tipo excel. - jgberenguer