Saltar al contenido

Codigo para coneccion a BD en Excel y consulta SQL

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

Featured Replies

  • 2 weeks later...
publicado
  • Autor

Insisto con este tema por si alguien tiene idea de como solucionarlo Gracias

publicado
  • Autor

Agradezco cualquier aporte para solucionar esta consulta SQL sobre una base de datos convertida a Tabla en excel

publicado
  • Autor

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.