Que tal reel, aqui te envio un ejemplo que tengo con un MSHFLEXGRID que fue el que tu mencionaste en tu pregunta...
'Abre una hoja de cálculo Excel con nuestro Grid actual
'Aqui esta funcion recibe en ADE una ruta en disco y el nombre con el cual quieres guardar tu archivo de Excel, ejemplo "C:\Exportado.xls"
Public Function EExcel(ByVal ADE As String)
Dim XlsApl As Excel.Application
Dim xlsLibro As Excel.Workbook
Dim y As Long
Screen.MousePointer = flexHourglass
Set XlsApl = New Excel.Application
With XlsApl
.Workbooks.Add
Set xlsLibro = .ActiveWorkbook
With xlsLibro.Worksheets(1)
.Activate
For x = 0 To Grid.Rows - 1
For y = 2 To Grid.Cols - 1
If x = 1 Then Exit For
.Cells(x + 1, y - 1) = Grid.TextMatrix(x, y)
Next y
Next x
End With
'.Visible = True 'Esto es si quieres que se muestre y abra excel al crearla
.Visible = False 'Si solo quieres que se genere el libro sin mostrarse
End With
xlsLibro.SaveAs (ADE)
xlsLibro.Close (ADE)
Set xlsLibro = Nothing
Set XlsApl = Nothing
'MsgBox "Libro de Excel Creado", vbInformation + vbOKOnly, "Terminado"
Screen.MousePointer = 0
End Function
...y listo, eso es todo, un codigo bastante sencillo y ya que lo he puesto en una función solo necesitas mandarle el nombre de tu libro de excel al llamarla
Espero te sea de ayuda, hasta pronto