/ / Scrivi dati in un file di testo usando Excel VBA

Scrivi dati in un file di testo usando Excel VBA

Di seguito vedremo un programma in Excel VBA quello scrive un intervallo di Excel in un file di testo CSV (comma-separated-value).

Situazione:

Scrivi dati in file di testo in VBA di Excel

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

1. Per prima cosa dichiariamo una variabile chiamata myFile di tipo String, un oggetto chiamato rng di tipo Range, una variabile chiamata cellValue di tipo Variant, una variabile chiamata i di tipo Integer e una variabile chiamata j di tipo Integer. Usiamo qui una variabile Variant perché una variabile Variant può contenere qualsiasi tipo di valore.

Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer

2. Dobbiamo specificare il percorso completo e il nome file del file.

myFile = Application.DefaultFilePath & "sales.csv"

Nota: la proprietà DefaultFilePath restituisce il percorso del file predefinito. Il percorso della cartella che vedi quando apri o salvi un file.

3. Inizializziamo l'oggetto range rng con l'intervallo selezionato.

Set rng = Selection

4. Aggiungi la seguente riga di codice:

Open myFile For Output As #1

Nota: questa istruzione consente di scrivere il file. Possiamo riferirci al file come numero 1 durante il resto del nostro codice. Se il file esiste già, verrà eliminato e verrà creato un nuovo file con lo stesso nome.

5. Avviare un doppio ciclo.

For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count

Nota: rng.Rows.Count restituisce il numero di righe (17 in questo esempio) e rng.Columns.Count restituisce il numero di colonne (4 in questo esempio).

6. Excel VBA scrive il valore di una cella nella variabile cellValue.

cellValue = rng.Cells(i, j).Value

7. Aggiungere le seguenti righe di codice per scrivere il valore di cellValue nel file di testo.

If j = rng.Columns.Count Then
    Write #1, cellValue
Else
    Write #1, cellValue,
End If

Spiegazione: a causa dell'istruzione If Then Else, Excel VBA avvia solo una nuova riga (Write # 1, cellValue) quando j è uguale al numero di colonne (ultimo valore di una riga). Per separare i valori con una virgola, usa Scrivi # 1, cellValue, (con una virgola).

8. Non dimenticare di chiudere entrambi i loop.

    Next j
Next i

9. Chiudi il file.

Close #1

10. Selezionare i dati e fare clic sul pulsante di comando sul foglio.

Risultato:

Scrivi dati nel risultato del file di testo

Leggi anche: