Danniel_Sk Posted March 2, 2011 Report Share Posted March 2, 2011 Necesito ayuda con excel tengo el codigo para hacerlo pero no se como hacerlo para seleccionar dentro del archivo una hoja X. este es el codigo Sub leer_fichero_excel2() 'Ocultamos el procedimiento Application.ScreenUpdating = False 'Si hay errores, que siga On Error Resume Next 'Definimos las variables: 'indicamos la ruta del fichero donde nos conectaremos, 'y que en este caso, será la misma que 'la de este fichero que contiene el macro ruta = ThisWorkbook.Path fichero = "Planilla_Febrero_CNCP 2011-2.xls" 'Creamos el objeto conexión Set Conn = New ADODB.Connection Conn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & ruta & "\" & fichero 'Creamos el objeto recordset Set rs = New ADODB.Recordset 'Seleccionamos los datos Sql = "SELECT * FROM C31:M34" 'Escribimos los datos rs.Open Sql, Conn, adOpenStatic, adLockOptimistic 'Traemos los datos, para lo cual 'comenzamos con los encabezados, 'y los escribiremos a partir de la celda A1 Range("A1").Select ActiveCell = rs.Fields.Item(0).Name ActiveCell.Offset(0, 1) = rs.Fields.Item(1).Name ActiveCell.Offset(0, 2) = rs.Fields.Item(2).Name ActiveCell.Offset(0, 3) = rs.Fields.Item(3).Name ActiveCell.Offset(0, 4) = rs.Fields.Item(4).Name ActiveCell.Offset(0, 5) = rs.Fields.Item(5).Name ActiveCell.Offset(0, 6) = rs.Fields.Item(6).Name ActiveCell.Offset(0, 7) = rs.Fields.Item(7).Name ActiveCell.Offset(0, 8) = rs.Fields.Item(8).Name ActiveCell.Offset(0, 9) = rs.Fields.Item(9).Name ActiveCell.Offset(0, 10) = rs.Fields.Item(10).Name ActiveCell.Offset(0, 11) = rs.Fields.Item(11).Name 'ponemos en negrita los encabezados Range("A1:K1").Font.Bold = True 'Ahora seguimos con los datos, hasta acabar 'con los datos que nos devuelve la consulta Do While Not rs.EOF ActiveCell.Offset(1, 0) = rs(0) ActiveCell.Offset(1, 1) = rs(1) ActiveCell.Offset(1, 2) = rs(2) ActiveCell.Offset(1, 3) = rs(3) ActiveCell.Offset(1, 4) = rs(4) ActiveCell.Offset(1, 5) = rs(5) ActiveCell.Offset(1, 6) = rs(6) ActiveCell.Offset(1, 7) = rs(7) ActiveCell.Offset(1, 8) = rs(8) ActiveCell.Offset(1, 9) = rs(9) ActiveCell.Offset(1, 10) = rs(10) ActiveCell.Offset(1, 11) = rs(11) 'nos movemos al siguiente registro rs.MoveNext 'bajamos una fila ActiveCell.Offset(1, 0).Select Loop 'cerramos y limpiamos los objetos rs.Close Conn.Close Set rs = Nothing Set Conn = Nothing 'Mostramos el procedimiento Application.ScreenUpdating = True End Sub con ese codigo puedo hacer que leea desde otro archivo pero no puedo indicarle que saque la informacion de una hoja X con esta parte es donde selecciona el rango 'Seleccionamos los datos Sql = "SELECT * FROM C31:M34" si alguien me puede ayudar porfa Link to comment Share on other sites More sharing options...
Ra Posted March 2, 2011 Report Share Posted March 2, 2011 Sql = "SELECT * FROM [Hoja2$C31:M34]" Salu2. Link to comment Share on other sites More sharing options...
Danniel_Sk Posted March 2, 2011 Author Report Share Posted March 2, 2011 oka vale, gracias, te puedo hacer otra consulta si puedes porfa, sabes necesito contar con dos condiciones y ademas que no me cunte las celdas vacias ejemplo sea la siguiente hoja: ____________________________ ___|__A__|___B___|__C__|__D__| _1_|__A__|_AZUL__|_____|_____| _2_|__B__|_ROJO__|_____|_____| _3_|__A__|_Verde__|_____|_____| _4_|__A__|_Verde__|_____|_____| _5_|__A__|__Rojo__|_____|_____| _5_|_____|________|_____|_____| entonces quiero que cuente todo de la columna B menos el AZUL y los vacios es decir seria el total 4 los dos rojos y los dos verdes, depues de eso quiero que se valide de eso que conto con la columna A me valide los que son solo A, al final la fomula me tendria que entregar 3 como total, si me puedes ayudar porfa con esa formula Link to comment Share on other sites More sharing options...
Ra Posted March 3, 2011 Report Share Posted March 3, 2011 Usando SQL? SELECT COUNT(A) FROM [Hoja2$A2:B6] WHERE B <> 'AZUL' Con eso tienes el primer resultado, osea, 4... Y para lo segundo y too junto: SELECT COUNT(CASE B WHEN 'AZUL' THEN NULL ELSE B END), COUNT(CASE WHEN A = 'A' AND B <> 'AZUL' THEN A ELSE NULL END) FROM [Hoja2$A2:B6] No sé si es con cremillas o comillas... Si no es con SQL, avisa para hacer la fórmula de Excel... Salu2. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now