voy por un intento mas, te paso la funcion que uso y me funciona bien.
Sub ExportarAExcel(ByVal xgridexpo As DataGridView)
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
Dim Filas = xgridexpo.Rows.Count
Dim Columnas = xgridexpo.Columns.Count
Dim Archivo As String = Application.StartupPath & "\Centros.csv"
Dim Linea As String = ""
Dim f As Integer
Dim c As Integer
File.Delete(Archivo)
strStreamW = File.OpenWrite(Archivo)
strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)
'CABECERA
For c = 0 To Columnas - 4
Linea = Linea & xgridexpo.Columns(c).Name & ";"
Next
Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing
'FILAS
For f = 0 To Filas - 1
For c = 0 To Columnas - 4
Linea = Linea & xgridexpo.Item(c, f).Value & ";"
'MsgBox(Grid.Item(c, f).Value)
Next
Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing
Next
strStreamWriter.Close()
Try
Process.Start(Archivo) 'Ejecuta el archivo creado
Catch Ex As Exception
MsgBox(Ex.Message, MsgBoxStyle.Critical, Ex.Source)
End Try
End Sub