Io ho fatto così . Sto usando un DataGridView ma credo sia uguale il procedimento
Il DataGridView è fatto da 7 righe ( Rows ) e 16 colonne ( Cells ) . I cicli sono numerati da 0 perchè il DataGridView inizia a contare da 0 e non da 1

codice:
 Private Sub Salva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Salva.Click
        Dim save As New SaveFileDialog


        save.Filter = "File cvs (*.csv)|*.csv; | All file (*.*)| *.*;"
        save.Title = " Save file as "
        save.InitialDirectory = "C:\"


        DialogResult = save.ShowDialog




        Dim testo As String
        Dim a As Integer
        Dim b As Integer
        If DialogResult = Windows.Forms.DialogResult.OK Then
            Dim scrivi As New System.IO.StreamWriter(save.FileName)
            For a = 0 To 7
                testo = ""
                For b = 0 To 15
                    testo = testo + DataGridView1.Rows(a).Cells(b).Value + ","
                Next
                scrivi.WriteLine(testo)
            Next
            scrivi.Close()
        End If
    End Sub