dissabte, 9 de juny del 2012

Escriptura sobre fitxers amb VBA

Tenim dos fitxers en dues carpetes diferents i volem afegir un texte al final de cada línia i que totes les dades acabin en un únic fitxer.





Si anem per parts, com Jack el Esbudellador, primer fem un mòdul per afegir la cadena MAMIFERS al primer fitxer:

Public Sub CargaAnimales()

Dim strListadoAnimales$, linia1$
Dim LongListadoAnimales As Long

LongListadoAnimales = FreeFile

strListadoAnimales = "e:\access\bichos\mamiferos\listado.txt"
Open strListadoAnimales For Input As #LongListadoAnimales

While Not EOF(LongListadoAnimales)
Line Input #LongListadoAnimales, linia1
linia1 = linia1 & "MAMIFERS" & ";"
Wend

Close #LongListadoAnimales


Ara ho farem una mica millor, en lloc d'escriure la ruta dins el codi, la calcularem amb CurrentProject.path



Ara ja veiem que podem obtenir el resultat que voliem però encara no ho hem aconseguit ni tan sols pel primer fitxer. Amb el següent codi -comentat- ho podrem resoldre pel primer fitxer:




Funciona. Ja ens crea un fitxer final afegint MAMIFEROS al final de cada línia, però encara no hem aconseguit que passi pel altre fitxer i, a banda, lamentablement, encara estem escrivint a ma el que volem que ens afegeixi (puntets vermells)

El que farem es crear un fitxer de clases (clases.txt) que contingui dues linies:
MAMIFEROS
PECES

Ara farem que es recorregui el fitxer de clases (mamifers i peixos) i que la lectura de cada línia es guardi per fer-la servir posteriorment. El codi amb aquests canvis i sense comentaris ni debugs seria aquest:



Tot i que es tracta d'un codi bastant simple, fa una mica de por. El que podem fer-ho, tot seguint el nostre referent Jack l'esbudellador, es fer-ho en quatre mòduls. Sols cal tenir una mica en compte el tema de que algunes variables tindran que passar de privades a públiques. Ens podria quedar una cosa així:



I finalment, el resultat:

Cap comentari:

Publica un comentari a l'entrada