Como descargar una tabla de una base de datos SQL remota en excel.
Pongamos por ejemplo, que tenemos una tienda en internet, en un servidor que nos ha proporcionado nuestro hosting.
Queremos descargar a nuestro ordenador la tabla de los productos para actualizar los precios y luego volverla a subir mediante un programa de gestion de bases de datos remotas.
Pues mediante Visual Basic en Excel se puede cargar la tabla completa en Excel desde nuestro ordenador pidiendo los datos remotamente al servidor de nuestro hosting:
1º En Excel hay que añadir la ‘Microsoft Active X Data Objects 2.x library’ en el menú Herramientas- referencias
2º Instalar el driver MySQL ODBC 35.1 Driver.Poner en google «MySQL ODBC 3.51 Driver»
3º Con este código implementamos un botón que carga una plantilla y pegamos ahí toda la tabla.
Private Sub CommandButton1_Click() ' Variables On Error Resume Next Dim conn As New ADODB.Connection Dim server_name As String Dim database_name As String Dim user_id As String Dim password As String ' Table action variables Dim i As Long ' counter Dim sqlstr As String ' SQL to perform various actions Dim table1 As String, table2 As String Dim field1 As String, field2 As String Dim rs As ADODB.Recordset Dim vtype As Variant Dim col As Integer '--------------------------------- 'Asignamos las variables server_name = "localhost" ' o conexion servidor tipo mysql.midominio.com database_name = "prestashop" 'nombre de base de datos user_id = "root" password = "" 'Establecemos la conexion Set conn = New ADODB.Connection conn.Open "DRIVER={MySQL ODBC 5.1 Driver}" _ & ";SERVER=" & server_name _ & ";DATABASE=" & database_name _ & ";UID=" & user_id _ & ";PWD=" & password _ & ";OPTION=16427" ' Option 16427 = Convert LongLong to Int: This just helps makes sure that large numeric results get properly interpreted 'Cargar la plantilla productos.xls Dim libro As Object Dim xlapp Set libro = GetObject(ThisWorkbook.Path & "\productos.xls") Set xlapp = libro.Parent xlapp.Visible = True 'hacerla visible xlapp.Windows("productos.xls").Visible = True Set rs = New ADODB.Recordset sqlstr = "SELECT * FROM " & "ps_products" 'seleccionamos toda la tabla ps_products rs.Open sqlstr, conn, adOpenDynamic 'poner titulos For col = 0 To rs.Fields.Count - 1 libro.Worksheets("Hoja1").Range("a1").Offset(0, col).Value = rs.Fields(col).Name Next With libro.Worksheets("Hoja1").Cells(2, 1) ' Cargamos los datos a partir de la 2ªfila .ClearContents .CopyFromRecordset rs End With archivoviejo.AddItem libro.Name archivoviejo.Text = libro.Name rs.Close 'cerramos el recordset Set rs = Nothing conn.Close 'cerramos la conexion Set conn = Nothing End Sub