RE:enviar datos desde excell a sqlserverd
Este codigo es muy bueno
Sub Carga_File_xls(ByVal oArchivo As String)
Dim sExcel As String
Dim r As Double
Dim rsExcel As ADODB.Recordset
Dim rsWork As ADODB.Recordset
Dim sql As String
Dim Cnn As String
Dim strSheet As String
sExcel = oArchivo
strSheet = "Lista"
If Dir(sExcel) = "" Then
MsgBox "Archivo " & sExcel & " no Existe", vbExclamation + vbOKOnly, Me.Caption
Exit Sub
End If
Cnn = "DRIVER=Microsoft Excel Driver (*.xls);" & _
"DBQ=" & oArchivo
'Selecciona archivo Bonos para grabar la Información
sql = "SELECT * FROM Archivo_Destino"
Set rsWork = New ADODB.Recordset
Set rsWork.ActiveConnection = cnAccess'Tu coneccion de sql
With rsWork
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
.Open sql, cnAccess
End With
Call cnAccess.Execute("DELETE FROM Archivo_Destino")
'Seleccionar la Hoja de excel para lectura
sql = "SELECT * FROM [" & strSheet & "$]"
Set rsExcel = New ADODB.Recordset
With rsExcel
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Open sql, Cnn
End With
Do Until rsExcel.EOF
If IsNull(rsExcel.Fields(0).Value) = True Then
GoTo Cierra
End If
With rsWork
.AddNew
.Fields(0).Value = rsExcel.Fields(0).Value
.Fields(1).Value = rsExcel.Fields(1).Value
.Fields(2).Value = rsExcel.Fields(2).Value
.Fields(3).Value = rsExcel.Fields(3).Value
.Fields(4).Value = rsExcel.Fields(4).Value
.Fields(5).Value = rsExcel.Fields(5).Value
On Error GoTo rsError_Handler
.UpdateBatch
End With
rsExcel.MoveNext
Loop
Cierra:
Set rsExcel.ActiveConnection = Nothing
rsExcel.Close
Set rsWork.ActiveConnection = Nothing
rsWork.Close
Exit Sub
rsError_Handler:
MessageStatusBar Msg2, False
Screen.MousePointer = vbDefault
'Si ocurre un error, al momento de crear el recordset
Msg = "Numero # : " & Err.Number & " " & Err.Description
Estilo = vbCritical + vbOKOnly
Título = Me.Caption
MsgBox Msg, Estilo, Título
End Sub