|
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.
|