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

Situazione:

Write Data to Text File in Excel VBA

Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:

  1. In primo luogo, si dichiara una variabile denominata myFile di tipo stringa, un oggetto chiamato rng di tipo Range, una variabile denominata CellValue di tipo variante, la variabile i chiamata di tipo integer e una variabile denominata j di tipo intero. Usiamo una variabile variante qui 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
  1. Abbiamo bisogno di specificare il percorso completo e il nome del file.

myFile = Application.DefaultFilePath & "\sales.csv"

Nota: la proprietà DefaultFilePath restituisce il percorso file predefinito. Per modificare la posizione predefinita, nella scheda File, fare clic su Opzioni, Salva.

  1. inizializzare la gamma RNG oggetto con l’intervallo selezionato.

Set rng = Selection
  1. Aggiungere la seguente riga di codice:

Open myFile For Output As #1

Nota: questa istruzione permette il file da scrivere. Siamo in grado di fare riferimento al file come # 1 durante il resto del nostro codice. Se il file esiste già, verrà eliminato e verrà creato un nuovo file con lo stesso nome.

  1. Avviare un Double Loop.

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

  1. Excel VBA scrive il valore di una cella al CellValue variabile.

cellValue = rng.Cells(i, j).Value
  1. Aggiungere le seguenti righe di codice per scrivere il valore di CellValue al file di testo.

If j = rng.Columns.Count Then

Write #1, cellValue

Else

Write #1, cellValue,

End If

Spiegazione: a causa della dichiarazione If Then Else, Excel VBA inizia solo una nuova linea (Write # 1, CellValue) quando j è uguale al numero di colonne (ultimo valore in una riga). Per separare i valori con una virgola, uso Write # 1, CellValue, (con una virgola).

  1. Non dimenticare di chiudere entrambi i loop.

Next j

Next i
  1. Chiudere il file.

Close #1
  1. Selezionare i dati e fare clic sul pulsante di comando sul foglio.

Risultato:

Write Data to Text File Result