Generar un new book con VBA

23/02/2005 - 02:59 por nanchoguti | Informe spam
Buenas noches amigos.

Como creo un nuevo libro con VBA a partir de 2 libros que tienen el mismo
diseño y que cumpla las siguientes condiciones.
1) Que en la columna F (de Libro1 y Libro2) tenga el texto "Empaque"

y

2) Que en la columna H (de Libro1 y Libro2) tenga el texto "R1" o "R2" o
"R3" o "R28".

Libro1 y Libro2 tienen 12 columnas y n filas.
La macro debe abrir automaticamente los libros Libro1 y Libro2 . Ademas si
el libro a crear Libro3 contiene alguna información se debe borrar
previamente todo el contenido antes de crear el nuevo archivo. Es decir el
Libro3 se crea cada vez que se ejecuta la macro.


Segunda Pregunta. Cúal es la instruccion que me permite borrar fisicamente
filas de un archivo: Requiero borrar de la hoja "Datos" las filas que en
la columna F aparece una palabra diferente a "Empaque".

Muchas gracias por su atención

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/02/2005 - 09:18 | Informe spam
hola, Nancho !

Mostrar la cita
=> esta pregunta [a mi] me ha quedado por demas... 'confusa' :(
[esperemos que alguien mas este 'mas despierto' que yo -a estas horas de mi madrugada'-] :))
[o quiza... si 'amplias' la informacion y proporcionas datos 'mas precisos'] ;)

Mostrar la cita
una forma +/- 'rapida' seria con una macro como la que te expongo a continuacion.
si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo decodigo 'normal' ==Sub EliminarFilasNoEmpaque()
Worksheets("Datos").Select
If [f1].AutoFilter Then [f1].AutoFilter
Range([f1], [f65536].End(xlUp)).AutoFilter Field:=1, Criteria1:="<>*empaque*"
Range([f2], [f65536].End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
[f1].AutoFilter
End Sub
#2 nanchoguti
23/02/2005 - 13:54 | Informe spam
Gracias Héctor Miguel por responder.
Aclaración. Tengo 2 hojas Calidad2004 y Calidad2005, ambos con el mismo
diseño y en diferentes libros. Requiero crear una nueva hoja CalidadTotal
en otro libro a partir de las anteriores, pero con la siguientes
condiciones .
- De Calidad2004 y Calidad2005 extraer filas que tengan en la columna F
el valor "Empaque" y en la columna H que tenga en valor de la celda
"R1" or "R3" or "R7" or "R28"
- La macro debe abrir automaticamente las hojas Calidad2004 Y Calidad2005
- La macro debe limpiar el contenido de CalidadTotal al inicio de la
ejecución. Es decir cada vez CalidadTotal debe arrancar como una hoja
vacía.

Con respecto a la segunda pregunta me funciono perfectamente, te pido el
favor si me puedes "comentariar en forma genérica" lo que hace cada
instrucción de esa macro. Sólo entiendo la instrucción :
Worksheets("Datos").Select , el resto de instrucciones no las comprendo

Muchas gracias


Héctor Miguel wrote:

Mostrar la cita
diseño y que cumpla las siguientes condiciones.

Mostrar la cita
de mi madrugada'-] :))
Mostrar la cita
precisos'] ;)

Mostrar la cita
palabra diferente a "Empaque".

Mostrar la cita
continuacion.
Mostrar la cita
Criteria1:="<>*empaque*"
Mostrar la cita
[f65536].End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Mostrar la cita
#3 Héctor Miguel
23/02/2005 - 22:15 | Informe spam
hola, Nancho !

tratare de contestarte 'entre' comentarios conforme a esta consulta.
si cualquier duda [o informacion adicional]... ¿comentas?
saludos,
hector.
_____
Mostrar la cita
__
1 para que la macro abra ambos libros y el tercero permanezca siempre 'en blanco'...
pon las macros en el libro que debera quedar siempre en blanco
... usa el evento '_open' para que automaticamente se abran los 'de soporte' y
... usa el evento '_beforeclose' para obligar a que NO se guarden los cambios
__
2 para emplear mas de dos criterios en los filtros... puedes usar [tambien por macros] los filtros avanzados
... filtras 'en el mismo lugar'
... seleccionas [de forma similar] solo las celdas visibles y
... copias al libro que 'concentra' [por cada uno de los otros dos libros]
... realizas lo que necesites en el libro tercero y
... [recuerda que] siempre, al terminar, no se grabarian los cambios
__
3 si requieres ayuda... o proporcionas datos mas 'precisos'... ['algo' se podra hacer, no crees?]
_____
Mostrar la cita
__
1 Worksheets("Datos").Select
=> convierte en la hoja 'activa' a la hoja seleccionada
__
2 If [f1].AutoFilter Then [f1].AutoFilter
=> si la celda 'F1' tiene 'puesto' un autfiltro... se lo quita
la expresion ->[f1]<- se refiere a la celda 'F1' -es la forma de 'notacion abreviada' de referencia a objetos-
'equivale' a decirle a la macro: Range("F1") -en la forma de notacion 'A1' que es la 'tradicional'-
__
3 Range([f1], [f65536].End(xlUp)).AutoFilter Field:=1, Criteria1:="<>*empaque*"
=> aplica un autofiltro ->solo a la columna 'F' y desde la fila1 hasta la ultima fila 'ocupada' de esa columna<-
es un equivalente de seleccionar la ultima fila de la columna 'F' [F65536]
... pulsar {Ctrl}+{FlechaArriba} y 'extender' la seleccion hasta la celda 'F1' [para seleccionar solo ese rango]
... y aplica un autofiltro 'buscando/filtrando/mostrando' solo aquellas que NO contengan el texto 'empaque'
__
4 Range([f2], [f65536].End(xlUp)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
=> similar a la linea anterior, 'excluye' la fila1 [suponiendo que son titulos]
... y elimina las filas de todas las celdas 'visibles/filtradas/mostradas' [las que NO contienen el texto 'empaque']
__
5 [f1].AutoFilter => [sin comentarios... bueno:] 'termina' el modo de autofiltrado :))
Ads by Google
Search Busqueda sugerida