Archivar solo ciertos registros

18/08/2009 - 16:25 por Jorge | Informe spam
Hola Hector Miguel. En relación a la consulta que formule al foro el día 10
de agosto reciente, te informo que subi el archivo a
http://rapidshare.de/files/48119158...n.xls.html para ver si puedes
ayudarme con la consulta formulada. Gracias

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
26/08/2009 - 00:32 | Informe spam
hola, Jorge !

... tengo problemas con lo que me enviaste...



(sera acaso porque las condiciones de operacion son diferentes del ejemplo que subiste ?)

... hice un bloque con la macro, abri Programador, Codigo, Visual Basic y la pegue bajo Option Explicit
(quedo como Modulo3, ya que no supe como cambiar el nombre).



el nombre del modulo de codigo no tiene mayor importancia y se puede cambiar desde la ventana de propiedades
seleccionas ese modulo y cambias su propiedad (name) que es la unica y aparece entre parentesis

A su vez elimine las hojas innecesarias y cambie el nombre de la #6 por historico.
A la macro le asigne el metodo abreviado Ctrl+h y esta quedo en la celda G2



las macros NO quedan "asignadas" a ninguna celda y el nombre de la hoja es el que administra la macro (por si decides cambiarlo)

pero lo que obtengo en historico son los datos del rango C304:C331, de la hoja Estado Diario
en el rango B2:B29 de la hoja historico y sin fecha.
Tiene solucion para incorporar los demas datos?...



en el ejemplo que subiste, en la hoja "estado diario" existe una serie de "fichas" cuyo contenido es +/- el siguiente:
- F4 contiene una fecha que se repite/copia/jala/... a los siguientes grupos (o fichas): F46, F88, F130... hasta F298
- los "grupos" de fichas estan separados cada uno por 42 filas (razon de ser de la variable: Salto = 42)
- en cada "grupo" (o ficha) tienes 28 filas/registros/... que pudieran tener datos todos, o solo algunos (razon de la variable: Grupo = 28)
- el primer registro (en el archivo que subiste) se encuentra en la fila 10 (razon del bucle: For Fila = 10 To )

con estos antecedentes, si cualquiera de las condiciones anteriores deja de ser "lo mismo" (obviamente) el codigo no funciona :((

si en la hoja historico obtienes en el rango B2:B29 los datos del rango C304:C331 (28 registros ambos) de la hoja "estado diario"
significa que en el rango "previo" de la hoja "estado diario" (C10:C303) NO existen datos que pasar a la hoja "historico"
considerando que la macro (propuesta) inicia su bucle desde la fila 10 (voy bien ?... o me regreso !!!)

cual(es) de las condiciones (o supuestos) anteriores esta siendo distinto ahora que estas corriendo pruebas ???

saludos,
hector.

__ OP __
- tienes varias hojas "xlsheetveryhidden", una de ellas (#6) se llama "hoja1"
a esa hoja le cambie el nombre por "Historico" <= OJO que es clave en la siguiente macro

prueba con una macro +/- como la siguiente y si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Registro_historico()
Dim Fila As Integer, Salto As Byte, Grupo As Byte, Registros As Byte, _
Datos, Fecha, modCalc
Salto = 42
Grupo = 28
With Application
.ScreenUpdating = False
modCalc = .Calculation
.Calculation = xlCalculationManual
With Worksheets("estado diario")
Fecha = .Range("f4")
For Fila = 10 To .Range("c65536").End(xlUp).Row Step Salto
With .Range("c" & Fila).Resize(Grupo)
Registros = Evaluate("count('" & .Parent.Name & "'!" & .Address & ")")
If Registros > 0 Then
Datos = .Resize(Registros).Value
With Worksheets("historico").Range("a65536").End(xlUp).Offset(1)
.Resize(Registros).Value = Fecha
.Offset(, 1).Resize(Registros).Value = Datos
End With
End If
End With
Next
End With
.Calculation = modCalc
End With
End Sub
Respuesta Responder a este mensaje
#7 Jorge
26/08/2009 - 01:55 | Informe spam
Hola Hector Miguel. Estoy seguro de no haber variado en nada la hoja que
subi, salvo unos formatos condicionales para ocultar indicadores de error.
Pero lo verificare y comento. Gracias
"Héctor Miguel" escribió:

hola, Jorge !

> ... tengo problemas con lo que me enviaste...

(sera acaso porque las condiciones de operacion son diferentes del ejemplo que subiste ?)

> ... hice un bloque con la macro, abri Programador, Codigo, Visual Basic y la pegue bajo Option Explicit
> (quedo como Modulo3, ya que no supe como cambiar el nombre).

el nombre del modulo de codigo no tiene mayor importancia y se puede cambiar desde la ventana de propiedades
seleccionas ese modulo y cambias su propiedad (name) que es la unica y aparece entre parentesis

> A su vez elimine las hojas innecesarias y cambie el nombre de la #6 por historico.
> A la macro le asigne el metodo abreviado Ctrl+h y esta quedo en la celda G2

las macros NO quedan "asignadas" a ninguna celda y el nombre de la hoja es el que administra la macro (por si decides cambiarlo)

> pero lo que obtengo en historico son los datos del rango C304:C331, de la hoja Estado Diario
> en el rango B2:B29 de la hoja historico y sin fecha.
> Tiene solucion para incorporar los demas datos?...

en el ejemplo que subiste, en la hoja "estado diario" existe una serie de "fichas" cuyo contenido es +/- el siguiente:
- F4 contiene una fecha que se repite/copia/jala/... a los siguientes grupos (o fichas): F46, F88, F130... hasta F298
- los "grupos" de fichas estan separados cada uno por 42 filas (razon de ser de la variable: Salto = 42)
- en cada "grupo" (o ficha) tienes 28 filas/registros/... que pudieran tener datos todos, o solo algunos (razon de la variable: Grupo = 28)
- el primer registro (en el archivo que subiste) se encuentra en la fila 10 (razon del bucle: For Fila = 10 To )

con estos antecedentes, si cualquiera de las condiciones anteriores deja de ser "lo mismo" (obviamente) el codigo no funciona :((

si en la hoja historico obtienes en el rango B2:B29 los datos del rango C304:C331 (28 registros ambos) de la hoja "estado diario"
significa que en el rango "previo" de la hoja "estado diario" (C10:C303) NO existen datos que pasar a la hoja "historico"
considerando que la macro (propuesta) inicia su bucle desde la fila 10 (voy bien ?... o me regreso !!!)

cual(es) de las condiciones (o supuestos) anteriores esta siendo distinto ahora que estas corriendo pruebas ???

saludos,
hector.

__ OP __
>> - tienes varias hojas "xlsheetveryhidden", una de ellas (#6) se llama "hoja1"
>> a esa hoja le cambie el nombre por "Historico" <= OJO que es clave en la siguiente macro
>>
>> prueba con una macro +/- como la siguiente y si cualquier duda (o informacion adicional)... comentas ?
>> saludos,
>> hector.
>>
>> Sub Registro_historico()
>> Dim Fila As Integer, Salto As Byte, Grupo As Byte, Registros As Byte, _
>> Datos, Fecha, modCalc
>> Salto = 42
>> Grupo = 28
>> With Application
>> .ScreenUpdating = False
>> modCalc = .Calculation
>> .Calculation = xlCalculationManual
>> With Worksheets("estado diario")
>> Fecha = .Range("f4")
>> For Fila = 10 To .Range("c65536").End(xlUp).Row Step Salto
>> With .Range("c" & Fila).Resize(Grupo)
>> Registros = Evaluate("count('" & .Parent.Name & "'!" & .Address & ")")
>> If Registros > 0 Then
>> Datos = .Resize(Registros).Value
>> With Worksheets("historico").Range("a65536").End(xlUp).Offset(1)
>> .Resize(Registros).Value = Fecha
>> .Offset(, 1).Resize(Registros).Value = Datos
>> End With
>> End If
>> End With
>> Next
>> End With
>> .Calculation = modCalc
>> End With
>> End Sub



Respuesta Responder a este mensaje
#8 Jorge
28/08/2009 - 18:06 | Informe spam
Hola Hector Miguel: Primero, tenías, como siempre, razón, ya que algo se
modificó, y como no supe que, "rescate" el archivo que había subido y en él,
funcionó sin problemas. Para finalizar mi proyecto (espero no molestar mas)
¿Como puedo hacer una macro para imprimir, pero que me discrimine celdas
ocupadas o vacias y asi determinar el rango a imprimir. Por ejemplo, y
siempre en el archivo que subí, si C52="" (o quizas sea mejor si C10<>""),
imprimir el rango A1:G41; si ademas esta ocupada la celda c52, entonces el
rango a imprimir será A1:G83, etc. En resumen, que imprima solo las hojas en
que existan datos en la columna C y rangos especificados. Ademas, esta macro,
me gustaria que fuera en la misma que envía los registros a hoja "historico",
de forma que junto con ordenar la impresión, se arciven los datos, la que
despues asignaria a un botón de control, que podria denominarse "Imprimir y
Guardar". Con eso, mi proyecto (en realidad mas tuyo que mio, por la ayuda
prestada), estaría terminado. Gracias.-

"Jorge" escribió:

Hola Hector Miguel. Estoy seguro de no haber variado en nada la hoja que
subi, salvo unos formatos condicionales para ocultar indicadores de error.
Pero lo verificare y comento. Gracias
"Héctor Miguel" escribió:

> hola, Jorge !
>
> > ... tengo problemas con lo que me enviaste...
>
> (sera acaso porque las condiciones de operacion son diferentes del ejemplo que subiste ?)
>
> > ... hice un bloque con la macro, abri Programador, Codigo, Visual Basic y la pegue bajo Option Explicit
> > (quedo como Modulo3, ya que no supe como cambiar el nombre).
>
> el nombre del modulo de codigo no tiene mayor importancia y se puede cambiar desde la ventana de propiedades
> seleccionas ese modulo y cambias su propiedad (name) que es la unica y aparece entre parentesis
>
> > A su vez elimine las hojas innecesarias y cambie el nombre de la #6 por historico.
> > A la macro le asigne el metodo abreviado Ctrl+h y esta quedo en la celda G2
>
> las macros NO quedan "asignadas" a ninguna celda y el nombre de la hoja es el que administra la macro (por si decides cambiarlo)
>
> > pero lo que obtengo en historico son los datos del rango C304:C331, de la hoja Estado Diario
> > en el rango B2:B29 de la hoja historico y sin fecha.
> > Tiene solucion para incorporar los demas datos?...
>
> en el ejemplo que subiste, en la hoja "estado diario" existe una serie de "fichas" cuyo contenido es +/- el siguiente:
> - F4 contiene una fecha que se repite/copia/jala/... a los siguientes grupos (o fichas): F46, F88, F130... hasta F298
> - los "grupos" de fichas estan separados cada uno por 42 filas (razon de ser de la variable: Salto = 42)
> - en cada "grupo" (o ficha) tienes 28 filas/registros/... que pudieran tener datos todos, o solo algunos (razon de la variable: Grupo = 28)
> - el primer registro (en el archivo que subiste) se encuentra en la fila 10 (razon del bucle: For Fila = 10 To )
>
> con estos antecedentes, si cualquiera de las condiciones anteriores deja de ser "lo mismo" (obviamente) el codigo no funciona :((
>
> si en la hoja historico obtienes en el rango B2:B29 los datos del rango C304:C331 (28 registros ambos) de la hoja "estado diario"
> significa que en el rango "previo" de la hoja "estado diario" (C10:C303) NO existen datos que pasar a la hoja "historico"
> considerando que la macro (propuesta) inicia su bucle desde la fila 10 (voy bien ?... o me regreso !!!)
>
> cual(es) de las condiciones (o supuestos) anteriores esta siendo distinto ahora que estas corriendo pruebas ???
>
> saludos,
> hector.
>
> __ OP __
> >> - tienes varias hojas "xlsheetveryhidden", una de ellas (#6) se llama "hoja1"
> >> a esa hoja le cambie el nombre por "Historico" <= OJO que es clave en la siguiente macro
> >>
> >> prueba con una macro +/- como la siguiente y si cualquier duda (o informacion adicional)... comentas ?
> >> saludos,
> >> hector.
> >>
> >> Sub Registro_historico()
> >> Dim Fila As Integer, Salto As Byte, Grupo As Byte, Registros As Byte, _
> >> Datos, Fecha, modCalc
> >> Salto = 42
> >> Grupo = 28
> >> With Application
> >> .ScreenUpdating = False
> >> modCalc = .Calculation
> >> .Calculation = xlCalculationManual
> >> With Worksheets("estado diario")
> >> Fecha = .Range("f4")
> >> For Fila = 10 To .Range("c65536").End(xlUp).Row Step Salto
> >> With .Range("c" & Fila).Resize(Grupo)
> >> Registros = Evaluate("count('" & .Parent.Name & "'!" & .Address & ")")
> >> If Registros > 0 Then
> >> Datos = .Resize(Registros).Value
> >> With Worksheets("historico").Range("a65536").End(xlUp).Offset(1)
> >> .Resize(Registros).Value = Fecha
> >> .Offset(, 1).Resize(Registros).Value = Datos
> >> End With
> >> End If
> >> End With
> >> Next
> >> End With
> >> .Calculation = modCalc
> >> End With
> >> End Sub
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida