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
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