.
Consulta un suscriptor del canal, si es posible que al importar los datos se cambie el orden de las columnas al momento de mostrar los datos en la hoja de Excel, la respuesta es SI, esta macro precisamente muestra como buscar por un rango de números cambiando el orden de las columnas al mostrar los datos usando SQL.
Descarguen el ejemplo en forma gratuita sin ninguna restricción desde el final del post, el código se puede adaptar a cada necesidad, Aporta por favor para sostener el sitio si está dentro de tus posibilidades, desde ya muchas gracias.
Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.
if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}
La conexión se logran con el siguiente código, recuerden que se usa Excel 2016 / 365
Par realizar la consulta se crea el string de consulta o SQL siendo la siguiente:
Se debe destacar que para alterar el orden en que se mostrarán las columnas, solo basta con cambiar o alterar el orden en que se ponen las columnas en la SQL es decir en este caso se ponen en el orden que se desea que aparezcan las columnas, no coincidiendo con el orden de las columnas en el Libro de Base de Datos.
Entre la sentencia SELECT y FROM se deben colocar el nombre de las cabeceras de las columnas en el orden que se requieran que se muestren los datos.
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también
Como insertar foto o imagen centrando automáticamente
Como hacer un bucle for next con letras del abecedario
Como crear una factura o sale invoice guardar e imprimir
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Para ejecutar la SQL se usa:
Set rs = cn.Execute(sql)
Para copiar los datos, cuyas columnas se ordenarán de acuerdo a lo ingresado en la SQL se usa el siguiente código
b.Cells(2, 1).CopyFromRecordset Data:=rs
Para copiar las cabeceras de las columnas en la fila 1 de la tabla se usa el siguiente código:
Posterior a ello se da ancho automático a las columnas y formato de fecha a la columna F con los siguientes códigos:
b.Range(«F:F»).NumberFormat = «dd/mm/yyyy»
Deben recordar de liberar las variables y cerrar la conexión al Libro de la siguiente manera:
El código completo del ejemplo llamado Como Buscar un Rango de Números con SQL Cambiando el Orden en que se Muestran Los datos Filtrados, se encuentra a continuación y posteriormente está el link para la descarga del archivo de ejemplo.
Código que se inserta en un módulo
Sub ConsutaSQLExcel()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ctl As Object
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String
On Error Resume Next
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set a = Sheets(«Hoja1»)
Set b = Sheets(«Hoja2»)mybook = ThisWorkbook.Path & «414 Conectar Excel con Excel Consulta SQL Base Datos.xlsx»
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0;» & «Data Source=» & mybook & «;Extended Properties=»»Excel 12.0;HDR=Yes;»»»
‘sql = «SELECT * FROM [» & «Hoja1$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
sql = «SELECT ID,Marca,Pv,Importe,Descripcion,Fecha,Cantidad FROM [» & «Hoja1$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
b.Cells.Clear
‘a.Range(«A1:G1»).Copy Destination:=b.Range(«A1»)
Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs
‘Carga los datos de la cabecera en listbox
For ii = 1 To 7
b.Cells(1, ii) = rs.Fields(ii – 1).Name
Next ii
b.Range(«A:G»).EntireColumn.AutoFit
b.Range(«F:F»).NumberFormat = «dd/mm/yyyy»
Set rs = Nothing
cn.Close
Set cn = Nothing
If b.Range(«A2») <> Empty Then
MsgBox («La busqueda se realizó con éxito»), vbInformation, «AVISO»
Else
MsgBox («No se encontraron registros para el criterio de búsqueda»), vbInformation, «AVISO»
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ctl As Object
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String
On Error Resume Next
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set a = Sheets(«Hoja1»)
Set b = Sheets(«Hoja2»)
mybook = ThisWorkbook.Path & «414 Conectar Excel con Excel Consulta SQL Base Datos.xlsx»
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0;» & «Data Source=» & mybook & «;Extended Properties=»»Excel 12.0;HDR=Yes;»»»
‘sql = «SELECT * FROM [» & «Hoja1$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
sql = «SELECT ID,Marca,Pv,Importe,Descripcion,Fecha,Cantidad FROM [» & «Hoja1$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
b.Cells.Clear
‘a.Range(«A1:G1»).Copy Destination:=b.Range(«A1»)
Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs
‘Carga los datos de la cabecera en listbox
For ii = 1 To 7
b.Cells(1, ii) = rs.Fields(ii – 1).Name
Next ii
b.Range(«A:G»).EntireColumn.AutoFit
b.Range(«F:F»).NumberFormat = «dd/mm/yyyy»
Set rs = Nothing
cn.Close
Set cn = Nothing
If b.Range(«A2») <> Empty Then
MsgBox («La busqueda se realizó con éxito»), vbInformation, «AVISO»
Else
MsgBox («No se encontraron registros para el criterio de búsqueda»), vbInformation, «AVISO»
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends