La gestione dei file sequenziali

Torna a Tutorials

Le routine seguenti permettono di gestire con VBA i file sequenziali ovvero flussi di dati non indicizzati provenienti, per esempio, da file di testo (TXT), testo formattato (RTF), documenti Word (DOC), o pagine web (HTML). Anche se Excel apre gią automaticamente file di questo tipo, questa funzionalitą ci permette di selezionare ed indirizzare agevolmente le righe lette (records) o parti di esse. Inoltre possiamo scrivere file sequenziali partendo da un flusso di dati Excel come una riga, una colonna o un'area del foglio di lavoro.
Creiamo un file di testo contenente una serie di righe valorizzate e salviamolo come "prova.txt". Apriamo un nuovo documento Excel e lo salviamo nella stessa cartella dove abbiamo inserito "prova.txt". A questo punto avviamo la console VBA e creiamo un nuovo modulo di codice dove inseriremo le due routine che andiamo a creare.
La routine legge da "prova.txt" e scrive riga per riga sulla prima colonna del foglio di lavoro attivo. L'elaborazione consiste di una apertura del file (comando "Open"), di un ciclo di lettura (comando "Line Input") e scrittura sulle celle in colonna 1, e infine chiusura del file (comando "Close").
 Sub Legge()
    Filein1 = ActiveWorkbook.Path & "\prova.txt"
    'Fileou1 = ActiveWorkbook.Path & "\prova.html"
    'Fileou1 = ActiveWorkbook.Path & "\prova.rtf"
    'Fileou1 = ActiveWorkbook.Path & "\prova.doc"

    Open Filein1 For Input As #1
    Numriga = 0

Leggi:   
    Numriga = Numriga + 1
    If Not EOF(1) Then     
    	Line Input #1, Job$
    	Cells(Numriga, 5) = Job$
	GoTo Leggi
    End If
    Close
End Sub
	
La routine ricava ciclicamente i valori dalla prima colonna del foglio di lavoro attivo e contestualmente li scrive nel file di testo "prova.txt" con il comando "Print".
Sub Scrive()
    'scrive una colonna da un file di testo
    Fileou1 = ActiveWorkbook.Path & "\prova.txt"
    'Fileou1 = ActiveWorkbook.Path & "\prova.html"
    'Fileou1 = ActiveWorkbook.Path & "\prova.rtf"
    'Fileou1 = ActiveWorkbook.Path & "\prova.doc"
    Open Fileou1 For Output As #1
    Numriga = 0

Leggi:
    
    Numriga = Numriga + 1
    Job$ = Cells(Numriga, 1)
    
    If Job$ <> "" Then
    	C$ = Job$
    	Print #1, C$
    	GoTo Leggi
    End If
    Close
End Sub

	
I due esempi descritti sono molto semplici, ma con un po' di fantasia e buona volontą si possono fare cose molto interessanti. Vi invito a fare delle prove e magari ad inviarmi i vostri elaborati alla sezione contatti o aprendo una nuova discussione nel forum.

Buon divertimento.

Cognolato Studio © 2004