Descargar una tabla SQL remota en excel

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
Los comentarios están cerrados.