Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Guardar datos de Excel a Sql server

2,064 views
Skip to first unread message

JIMAT

unread,
Aug 3, 2009, 6:27:02 AM8/3/09
to
Buenos días,

Desde excel es posible conectarse a una tabla de SQL Server y cargar sus
datos. Mi pregunta es, ¿Es posible modificar estos datos y guardar los datos
en la tabla de SQL Server?. Es decir, ¿Es posible actualizar datos de tablas
de SQL Server desde Excel?.

Un saludo.
http://www.jimat.es

Juan M

unread,
Aug 3, 2009, 7:19:24 AM8/3/09
to

"JIMAT" <JI...@discussions.microsoft.com> escribi� en el mensaje
news:6E2ABEA3-B449-4EFB...@microsoft.com...
> Buenos d�as,


Hola,

Si es posible a traves de vba.
En la variable servidor debes poner el nombre de tu servidor
En la variable Catalogo debes poner el nombre de la base de datos donde
tienes la tabla a actualizar
En las consultas se define el nombre de la tabla que vas a actualizar En el
eljemplo MiTabla

Lo que hace es a partir de los datos pasados (fecha, dato1, dato2, dato3)
comprueba si en la fecha que pasamos existe un registro, si existe lo
actualiza,
si no existe a�ade un nuevo registro con los valores que hemos pasado.

Debes tener activado la referencia a Microsoft ActiveX Data Objects 2.X
library, Desde el menu Herramientas del editor de vba en la parte de
referencias.

Se llama de la siguiente manera

InsertarValoresSQL range("A2"), range("B2"), range("C2"), range("D2")

en las celdas tenemos los datos compatibles con los campos de la tabla.

Comentas si hay algun problema?

Un saludo,
Juan

=== Inicio Codigo

Sub InsertarValoresSQL(fecha As Date, Dato1 As Double, Dato2 As Double, _
Dato3 As Double)

Dim Servidor As String
Dim Catalogo As String

Dim strCnn As String
Dim strSQL As String

Dim mCnn As ADODB.Connection
Dim mRst As ADODB.Recordset

'comprobar datos

Servidor = "Nombre Servidor"
Catalogo = "Nombre de la base de datos"

On Error GoTo HayErrores

strCnn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;" & _
"Initial Catalog=" & Catalogo & ";Data Source=" & Servidor & ";"

Set mCnn = New ADODB.Connection

With mCnn
.CursorLocation = adUseClient
.Open strCnn
End With

strSQL = "Select * from MiTabla where fechaproduccion='" & fecha & "'"

Set mRst = New ADODB.Recordset

mRst.Open strSQL, mCnn, adOpenStatic, adLockOptimistic, adCmdText

If mRst.EOF Then
'cierra el recordset anterior para crear uno nuevo
mRst.Close
With mRst
.Open "MiTabla", mCnn, adOpenKeyset, adLockOptimistic,
adCmdTable
.AddNew
.Fields!FechaProduccion = Format(fecha, "yyyy/mm/dd")
.Fields!Campo1 = Dato1
.Fields!Campo2 = Dato2
.Fields!Campo3 = Dato3
.Update
End With
Else
'Actualiza los datos
With mRst
.Fields!Campo1 = Dato1
.Fields!Campo2 = Dato2
.Fields!Campo3 = Dato3
.Update
End With
End If

mRst.Close
mCnn.Close
Set mRst = Nothing
Set mCnn = Nothing
Exit Sub

HayErrores:
MsgBox Err.Description
mRst.Close
mCnn.Close
Set mRst = Nothing
Set mCnn = Nothing

End Sub

=== Fin Codigo


JIMAT

unread,
Aug 3, 2009, 8:22:01 AM8/3/09
to
OK. Gracias.

Estaba pensando en funcionalidad ya implementada por microsoft. Voy a
intentar implementar un ribbon bar con esta y otra funcionalidad y lo colgaré
cuando esté listo en www.jimat.es.

De todas formas gracias.

"Juan M" wrote:

>
> "JIMAT" <JI...@discussions.microsoft.com> escribió en el mensaje
> news:6E2ABEA3-B449-4EFB...@microsoft.com...
> > Buenos días,


> >
> > Desde excel es posible conectarse a una tabla de SQL Server y cargar sus
> > datos. Mi pregunta es, ¿Es posible modificar estos datos y guardar los
> > datos
> > en la tabla de SQL Server?. Es decir, ¿Es posible actualizar datos de
> > tablas
> > de SQL Server desde Excel?.
> >
> > Un saludo.
> > http://www.jimat.es
>
>
> Hola,
>
> Si es posible a traves de vba.
> En la variable servidor debes poner el nombre de tu servidor
> En la variable Catalogo debes poner el nombre de la base de datos donde
> tienes la tabla a actualizar
> En las consultas se define el nombre de la tabla que vas a actualizar En el
> eljemplo MiTabla
>
> Lo que hace es a partir de los datos pasados (fecha, dato1, dato2, dato3)
> comprueba si en la fecha que pasamos existe un registro, si existe lo
> actualiza,

> si no existe añade un nuevo registro con los valores que hemos pasado.

0 new messages