La verdad es que solo hice hace mucho tiempo un a prueba de crear una hoja de escell desde visual y tenia el código dado anteriormente, no puedo ser de utilidad en la primera pregunta pero consulta estas páginas:
http://www.lawebdelprogramador.comhttp://www.programacion.comhttp://guille.costasol.comAhora sobre como introducir el contenido de un datagrid, a ver si esto te sirve:
Public Sub Exporta_excel()
Dim s, j As Integer
Dim i As Long
Dim n As Long
Screen.MousePointer = vbHourglass
On Error Resume Next
Set objExcel = GetObject(, "Excel.Application")
If Err.Number Then
Err.Clear
Set objExcel = CreateObject("Excel.Application")
If Err.Number Then
MsgBox "Error al tratar de abrir Excel"
End If
End If
With rs 'Recordset obtenido mediante el procedimiento [Get_recordset]
objExcel.Visible = True 'Abre excel
Set objWorkbook = objExcel.Workbooks.Add 'Agrega una hoja de trabajo
.MoveFirst
s = 2
While .EOF = False 'Ciclo para tener acceso a todos los campos
For i = 1 To .Fields.Count 'Ciclo que hace referencia a las Columnas [campos]
objWorkbook.ActiveSheet.Cells(s, i).Value = .Fields(.Fields(i - 1).Name).Value
Next
.MoveNext
s = s + 1
Wend
For j = 1 To .Fields.Count 'Ciclo que llena el primer renglon con los titulos de los campos
objWorkbook.ActiveSheet.Cells(1, j).Value = .Fields(j - 1).Name
objExcel.Columns.EntireColumn.AutoFit
Next
End With
Set objExcel = Nothing
Set objWorkbook = Nothing
Screen.MousePointer = vbDefault
End Sub
Siento no poder ayudarte mejor, si tienes alguna duda sobre algún otro problemilla, ya sabes donde encontrarme.