L'objectiu seria afegir a cada linia d'un txt el seu nom de fitxer. Exemple:
Es a dir, volem que cada linia del fitxer de Barcelona (08019) afegeixi, al principi de línia, aquest codi INE. Les dades es troben en una carpeta D:\addINE
El codi en VBA (es recomana llegir-ho amb Notepad++). S'ha fet en un formulari amb un únic botó.
Option Compare Database
Option Explicit
Dim dbs As Database
Dim rs As Recordset
Private Sub cmdCarregaINE_Click()
Dim qryTblINE As String 'Creem una variable per una query que funcionarà com a recordset
Dim strFitxer, strFitxerEscript As String 'Creem les variable pel fitxer origen i pel fitxer provisional on escriurem
Dim intFitxer, intFitxerEscript As Long 'Creem les variables per donar un número d'ordre al fitxer -origen i provisional-
Dim linFitxer, linFitxerEscript As String 'Creem les variables on desarem el que llegim i escribim
qryTblINE = "SELECT tblINE.INE FROM tblINE ORDER BY tblINE.INE;"
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset(qryTblINE) 'Al cridar a una variable no possem les cometes. Si cridessim a una taula si caldria que fos amb cometes ("tblINE")
While Not rs.EOF
intFitxer = FreeFile 'obtenim un número de gestor de fitxer lliure per gestionar l'opertura de fitxer inicial
strFitxer = "D:\addINE\" & rs![ine] & ".txt" 'Obtenim la ruta origen
strFitxerEscript = "D:\addINE\" & rs![ine] & "Escript.txt" 'Obtenim la ruta destí provisional
Open strFitxer For Input As #intFitxer 'Obrim el fitxer original per lectura donant-li un gestor ordenat
While Not EOF(intFitxer) 'Mentre no arribem al final del fitxer. Fem servir un gestor ordenat, no el propi fitxer
Line Input #intFitxer, linFitxer 'Escribim el contingut de la linia tractada en una variable
linFitxer = rs![ine] & ";" & linFitxer 'Afegim el valor del rs![INE] + ; al principi de la linia tractada
intFitxerEscript = FreeFile 'Obtenim un nou número de gestor de fitxer lliure pel fitxer provisional
Open strFitxerEscript For Append As #intFitxerEscript 'Obrim el fitxer provisional en mode escriptura amb el gestor
Print #intFitxerEscript, linFitxer 'Escribim dins el fitxer provisional,amb un gestor, la variable que hem llegit
Close #intFitxerEscript 'Tanquem el fitxer provisional. Cada vegada tindrà una linia més
Wend
Close #intFitxer 'Tanquem el fitxer inicial
Kill strFitxer 'Matem físicament el fitxer inicial
Name strFitxerEscript As strFitxer 'Canviem el nom del fitxer provisional pel nom del inicial
rs.MoveNext 'anem al següent registre del recordset
Wend
MsgBox "Ja he acabat"
End Sub
Cap comentari:
Publica un comentari a l'entrada