Saltar al contenido

Codigo para coneccion a BD en Excel y consulta SQL


Recommended Posts

publicado

Al ejecutar esta macro sobre los datos de la hoja1 funciona perfectamente, sinembargo requiero modificar la coneccion o asignacion de variables deforma que al convertir los datos de la Hoja1 en una Tabla Ver Hoja"TABLA" a la que denomino por el administrador de nombres "TDatos" sea posible ejecutar la misma consulta. anexo la consulta inicial sobre los datos de la hoja1 que entrega el resultado en la hoja2 " Sub ConectarExcel()" y abajo la correspondiente sobre los datos en la hojaTabla en la que el mensaje es que no encuentra el objeto "TDatos". el archivo es Xls dado que no pude subir el xlsm

Gracias

Sub ConectarExcel()

Dim Conexión As Object, rs As Object

Set Conexión = New ADODB.Connection

Conexión.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Users\xxx\Documents\Excel\Ventas.xlsm;" & _

"Extended Properties=""Excel 8.0;HDR=Yes;"" "

If Conexión.State = 1 Then

Set rs = New ADODB.Recordset

With rs

.CursorLocation = adUseClient

.CursorType = adOpenStatic

.LockType = adLockOptimistic

End With

rs.Open "SELECT distinct Ciudad, Sum(Ventas) as Total FROM [" & "Hoja1$A1:C10" & "] WHERE Ventas>0 GROUP BY Ciudad ", Conexión, , , adCmdText

Hoja2.Cells.ClearContents

Hoja2.Range("A2").CopyFromRecordset rs

End If

For j = 0 To rs.Fields.Count - 1

'x = rs.Fields(j)

z = rs.Fields(j).Name

Sheets("hoja2").Select

Hoja2.Range(Cells(1, j + 1), Cells(1, j + 1)) = z

Next j

rs.Close

End Sub

Sub ConectarExcelTabla()

Dim Conexión As Object, rs As Object

Set Conexión = New ADODB.Connection

Conexión.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=C:\Users\xxx\Documents\Excel\Ventas.xlsm;" & _

"Extended Properties=""Excel 8.0;HDR=Yes;"" "

If Conexión.State = 1 Then

Set rs = New ADODB.Recordset

With rs

.CursorLocation = adUseClient

.CursorType = adOpenStatic

.LockType = adLockOptimistic

End With

rs.Open "SELECT distinct [Ciudad], Sum([Ventas]) as Total FROM [TDatos] WHERE [Ventas]>0 GROUP BY [Ciudad] ", Conexión, , , adCmdText

Hoja3.Cells.ClearContents

Hoja3.Range("A2").CopyFromRecordset rs

End If

For j = 0 To rs.Fields.Count - 1

'x = rs.Fields(j)

z = rs.Fields(j).Name

Sheets("hoja2").Select

Hoja3.Range(Cells(1, j + 1), Cells(1, j + 1)) = z

Next j

rs.Close

End Sub

Ventas.xls

  • 2 weeks later...
publicado

Giova123 Muchas gracias, Excelente funciona perfecto, en conclusión hay que hacer referencia al nombre de la hoja en lugar de al nombre de la tabla. Me cuentas si el uso del signo $ a continuacion del nombre de la hoja, tiene que ver con alguna sintaxis especifica, donde las encuentro' muchas veces paso tiempo tratando de "adivinar", la convinacion precisa para denotar variables numericas de texto etc. usando convinaciones de los caracteres ( ' " & y ahora $)

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.