none
Acceder a SQL desde VBA Excel RRS feed

  • Pregunta

  • Hola a todos!!

    Tengo que hacer una pequeña aplicacion en excel, que tiene que conseguir lo siguiente:

    Pulsando un boton que pondre en una hoja de excel tiene que aparecer un userform con un combo. Los datos de este combo tienen que venir de una tabla que tengo en un servidor SQL 2005.

    Una vez seleccionan un valor del combo, con un boton tiene que crear una columna dentro de la tabla con el encabezado del valor del combo.

    Sabeis como puedo cargar los datos del combo?? Es decir hacer la conexion al SQL y llenar el combo??

    Un saludo y muchas gracias.

     

    jueves, 18 de noviembre de 2010 8:48

Respuestas

  • Debes abrir la ventana de código, insertar un userform y un combobox. Debes agregar una referencia a Microsoft Activex Data Objetcs

    Una aproximación del codigo necesario.....

    Private Sub Workbook_Open()
    ' Initialize variables.
    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
    Dim provStr As String

    ' Specify the OLE DB provider.
    cn.Provider = "sqloledb"

    ' Specify connection string on Open method.
    provStr = "Server=MyServer;Database=northwind;Trusted_Connection=yes"
    cn.Open provStr
    rs.Open "unatabla", cn, adOpenDynamic, adLockOptimistic
    If Not rs.EOF Then
    i = 0
        Do Until rs.EOF
        UserForm1.ComboBox1.AddItem rs(0), i
        i = i + 1
        rs.MoveNext
        Loop
    End If

    rs.close'cerrar el conjunto de registros

    cn.close'cerrar la conexion

    set rs=nothing'destruir objeto para liberar recursos

    set cn=nothing'idem anterior
    End Sub

    • Marcado como respuesta Vicdeju viernes, 19 de noviembre de 2010 17:07
    viernes, 19 de noviembre de 2010 13:28

Todas las respuestas

  • Para conectarte a una base de datos y cargar un recordset, debes buscar información sobre:

    1. Declarar y abrir un objeto adodb.connection, contra sqlserver
    2. Declarar y abrir un objeto adodb.recordset
    3. Recorrer el conjunto de registros y llenar el combo con el método additem
    jueves, 18 de noviembre de 2010 12:28
  • Muchas gracias.
    jueves, 18 de noviembre de 2010 15:06
  • Debes abrir la ventana de código, insertar un userform y un combobox. Debes agregar una referencia a Microsoft Activex Data Objetcs

    Una aproximación del codigo necesario.....

    Private Sub Workbook_Open()
    ' Initialize variables.
    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
    Dim provStr As String

    ' Specify the OLE DB provider.
    cn.Provider = "sqloledb"

    ' Specify connection string on Open method.
    provStr = "Server=MyServer;Database=northwind;Trusted_Connection=yes"
    cn.Open provStr
    rs.Open "unatabla", cn, adOpenDynamic, adLockOptimistic
    If Not rs.EOF Then
    i = 0
        Do Until rs.EOF
        UserForm1.ComboBox1.AddItem rs(0), i
        i = i + 1
        rs.MoveNext
        Loop
    End If

    rs.close'cerrar el conjunto de registros

    cn.close'cerrar la conexion

    set rs=nothing'destruir objeto para liberar recursos

    set cn=nothing'idem anterior
    End Sub

    • Marcado como respuesta Vicdeju viernes, 19 de noviembre de 2010 17:07
    viernes, 19 de noviembre de 2010 13:28