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 !

Como creo un nuevo libro con VBA a partir de 2 libros que tienen el mismo diseño y que cumpla las siguientes condiciones.



=> 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'] ;)

Segunda Pregunta.
... borrar de la hoja "Datos" las filas que en la columna F aparece una palabra diferente a "Empaque".



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
Respuesta Responder a este mensaje
#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:

hola, Nancho !

> Como creo un nuevo libro con VBA a partir de 2 libros que tienen el mismo


diseño y que cumpla las siguientes condiciones.

=> 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'] ;)

> Segunda Pregunta.
>... borrar de la hoja "Datos" las filas que en la columna F aparece una


palabra diferente a "Empaque".

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
Respuesta Responder a este mensaje
#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.
_____
... 2 hojas Calidad2004 y Calidad2005... mismo diseño... diferentes libros
... crear una nueva hoja CalidadTotal en otro libro a partir de las anteriores
... de Calidad2004 y Calidad2005 extraer filas que tengan:
... en la columna F el valor "Empaque"
... en la columna H... "R1" o "R3" o "R7" o "R28"
... macro debe abrir... Calidad2004 y Calidad2005
... limpiar... CalidadTotal al inicio de la ejecucion
... cada vez CalidadTotal debe arrancar como una hoja vacia.


__
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?]
_____
... segunda pregunta... si me puedes "comentariar... lo que hace... esa macro.
... entiendo la instrucción: Worksheets("Datos").Select , el resto de instrucciones no las comprendo


__
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 :))
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida