Parpadeo en Excel

16 envíos / 0 nuevos
Último envío
Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Parpadeo en Excel

Buenas tardes:

 

Estoy desarrollando un Cuadro de Mando en Excel . Me gustaría me echaran una mano en los siguientes temas:

1) En algunas opciones, no consigo evitar el 'parpadeo' de Excel , ya he probado co 'Application.ScreenUpdating = False', pero no hay forma.

   Por si vale de ayuda llamo a la macro desde una imagen, pero esta imagen está igualmetne en otras hojas y no existe tal parpadeo.

   Seguro debe existir alguna otra fórmula para evitar tal contratiempo.

 

2) Quisiera saber los registros de Excel en sus versiones 9 a 15 para quitar el bloqueo de seguridad para Macros, de forma que cuando un usuario instale

    el paquete en su ordenador no tenga que (primero) activar las macros y (segundo)  ejecutarlo.

 

Bueno, por ser mi primera vez, no sé si me he pasao'.

De cualquier forma agradecería alguna ayuda al respecto.

Vayan mis 'gracias' por adelantado.

 



xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

Hola,

 

Raro. Prueba también a añadir Application.Calculation = xlManual al inicio de la macroy al final Application.Calculation = xlAutomatic al final de la macro, que mal no te hará, y evitará demoras recalculando alguna UDF tuya o alguna fórmula compleja en la hoja.

Si lo anterior no funciona, considera entonces que ayudaría que enviaras algo del archivo... (no tienes porqué enviar todas las macros, ni todo el archivo, sólo donde veas que hace cosas raras).

 

Respecto a lo del registro... ¿¿¿¿¿estás seguro de que quieres modificar el registro del usuario?????. SorprendidoSorprendidoSorprendido

 

En caso de que se vaya a instalar en un ordenador de una empresa: ¿¿¿¿Realmente crees que el técnico Administrador del sistema permitirá esto????. ¿¿El antivirus tendrá algo que decir??

 

Vía macro, puedes intentar alguna solución para que se ejecuten otras macros, pero la macro que lo hace tiene que estar en ejecución previamente (o sea, que alguien la haya aprobado).

Yo lo hago así, pero sin más explicaciones a mi Google me tira que es un virus, por cosas como esta y por otras que modifican macros a través de macros, y de hecho no puedo mandar directamente mis macros a través de Gmail, tengo que comprimirlas con clave.

 

También puedes tratar de crear un certificado y así permitir registrar las macros para que no le pida la confirmación al usuario para tus macros (como le ocurre a la macro EuroTool.XLA que viene por defecto), estableciendo previamente la seguridad en MEDIA.

¿Cómo se hace eso? ---> Me has pillado, nunca lo he hecho, pero estoy tentado Risahttp://office.microsoft.com/en-us/excel-help/digitally-sign-a-macro-project-HA001231781.aspx?CTT=5&origin=HP010096919

 

 

Saludos.

Y por lo que más quieras, evita modificar cosas en el ordenador del usuario. Y menos, que sean en el registro

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

Bueno, yo lo he probado (WInXP-SP3 / MSOffice2003), y funciona, pero no me hago responsable de las consecuencias que se deriven de su puesta en práctica:

Avisado quedas... 

 

Guarda lo subrayado en un archivo .REG

 

REGEDIT4

 

[HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Security]

"Level"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Security]

"Level"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security]

"Level"=dword:00000001

 

Por cómo está expuesto aquí, ya te imaginarás cómo tienes que hacer para otras versiones...

 

Parece que también esto tendría relevancia en según qué versión:

[HKEY_CURRENT_USER\Software\Microsoft\Office\XXXXXXXXX\Excel\Security\VBAWarnings]

http://technet.microsoft.com/en-us/library/cc178946(v=office.12).aspx

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Re: Parpadeo en Excel

Buenos días:

Ante todo gracias por la prontitud y exactitud de respuesta a mi pregunta, provaré con las dos sugerencias a ver que pasa.

Efectivamente le tengo puesto 'application.Calculation = xlManual' y automático al terminar, parece ser que el 'parpadero'

se produce cuando hago un :

                    Range("E283:U310").Select
                    Selection.Copy
               
                    Range("E2:U29").Select
                     Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 

En ésta última instrucción ' PasteSpecial ' es donde se produce el 'parpadeo'.

Quizá lo pueda sustituir para que haga el mismo efecto de otra forma, pero seguro me costará más tiempo y ralentizará el programa.

Por cierto deja seleccionadas las celdas últimas ' "E2:U29" ' y tengo que seleccionar una nueva celda para que el efecto de marcado selección se vaya,

también he probado con ' Application.CutCopyMode = False ' , pero nada.

En cuanto a las claves de window , no conozco lo de la firma digital, pero no quiero seguir molestando. Previamente lo advertiré para que el usuario

tenga plena conciencia de lo que va a hacer e igualmente advertiré de las influencia del antivirus en cuestión.

Si después de comprobar cuanto hemos escrito no logro arreglarlo le enviaré una copia comprimida, por si tuviera otro arreglo, de acuerdo?

Mil gracias por su tiempo , de cualquier forma (y si no molesto mucho), dejaré la solución (cuando la tenga) en su web, por si puede serle útil a un tercero.

Un cordial saludo

 

 

 

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

Eso mismo, que quedaría reducido a esto,  ¿te produce el mismo efecto?:

    With ActiveSheet

            .Range("E283:U310").Copy

            .Paste Destination:=.Range("E2:U29")

    End With

¿Hay muchas fórmulas "complejas" en ese rango "E283:U310"?, porque si no, no lo entiendo.

Respecto a lo del marcado, es indiferente. Siempre habrá que seleccionar un rango activo.


No es molestar. A quien puede que sí moleste sea al usuario de tu programa, o al informático que se encargue de su mantenimiento.


Un saludo

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Lo prometido es deuda.

Buenas tardes:

Tal y como quedé en mi anterior pregunta, adjunto 'Libro1.xls' y 'Libro2.xls', con el primero trabajo con ' Copy - Paste ', tal y como haces referencia en tu última respuesta (si nos podemos tutear) y en el segundo inmovilizo la primera fila y solo muestro al usuario la información que desea , habiéndola previamente escrito en la parte de inferior de la hoja.En cambio en el primer libro (donde trabajo con ' copy - paste ' , sigue apareciendo el famoso parpadeo, creo que lo podreis observar, es un fastidio porque igualmente tendré que modificar algunas rutinas que tienen algo parecido al efecto del que hablamos. Si podeis echarles un vistazo ..

Con estos libros queda contestada tu última pregunta. Es una rutina que lee de la base de datos y estampa en la hoja de excel las cantidades para después mostrarlas al usuario en el orden que éste estime conveniente. No me quiero enrollar mucho en la forma de operar ya que creo queda claro en las hojas de cada libro.

Con respecto al certificado para registar las marcos, os agradecería alguna explicación al respecto o algún link donde poder dirigirme, vale?

Dejo los libros abiertos y libres por si considerais pudieran enriquecer el foro (sé que no es mucho ), o ayudar a alguien que pudiera tener el mismo problema o que simplemente quiera mostrar datos en un mapa. Seguro se pueden encajar mejor.

De cualquier forma estoy agradecido por vuestro tiempo por lo que si considerais pudiera ayudaros en algo o algún tipo de colaboración no dudeis en decirlo, vale?

Por mi parte no dudaré en aportar aquello que pueda considerar útil o seguir preguntando.

Un cordial saludo y de nuevo Gracias.

AdjuntoTamaño
Office spreadsheet icon libro1.xls261 KB
Office spreadsheet icon libro2.xls219 KB
xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Lo prometido es deuda.

Muy curioso, me ha gustado la idea. Me quedo con ganas de ver qué otras cosas podrían ocurrirse. Aunque lo del libro1, de pinchar en el icono y que muestre algún resultado, una tabla, un informe... uhmmm, qué ideas se me pasan por la cabeza. 

Yo lo haría de otra forma:

- prescindiría del Scroll, que al final es lo que produce el parpadeo.

- Crearía un único mapa, y en una hoja independiente, guardaría los datos brutos.

- Crearía referencias a cada Provincia de la forma:

    With ActiveWorkbook.Names

        .Add Name:="P15", RefersToR1C1:="=Mapa_Mudo!RxCw" 'A Coruña

    End With
 
Y a sus datos, en la forma

    With ActiveWorkbook.Names

        .Add Name:="D15", RefersToR1C1:="=Mapa_Mudo!RyCz" 'A Coruña

    End With
 
Crearía un sistema de numeración para guardar los números de columnas en la tabla de datos (y poder hacer un truco luego):
Private Enum eColumna (o el nombre que les quieras poner tú)
Nombres = 3 'Columna 3
Ventas = 19 'Columna donde guardes las ventas
Porcentajes = 20 'Columna donde guardes los porcentajes
Tendencia = 5 '... the same as before...
End Enum
 
Según se pinche en los botones, se asignaría a una celda conocida los valores de la columna clave-->
Sub BotonNombres_Click()
Range(A1) =  Nombres 'esto asigna a la celda A1 el valor 3
End if
 
Y luego, en cada una de las celdas (tanto las de tipo P, como las de tipo D), las montaría con una fórmula de BuscarV(Valor buscado, MatrizdeBusqueda, ColumnaResultados -que se guardó en A1-, Ordenado)
 
Lo de Valor Buscado está en negrita porque no se me ocurren formas originales de referenciarlo, eso lo dejo a tu creatividad, la más tosca es con otro mapa al lado (sin imagen, sólo datos con nombres o C.P. de las provincias).
 
Y para rematar, crearía formatos condicionales en las celdas tipo D: SI valor = h cambiar a formato Widwings y color, Si valor = i cambiar a formato widwings y otro color).
Esto también se podría hacer con una macro pinchando en los botones.
 
No sé si llevaría más o menos tiempo, supongo que por ahí andaría y sería lo mismo, pero quedaría, en mi modesta opinión, más limpio, y ordenado, perfecto para ampliarlo con muchos más datos o representaciones porque el trabajo gordo ya estaría hecho (daría el mismo trabajo montar el sistema para representar 1, 10 o cautrociendos tipos de datos distintos, tan sólo habría que añadir el botón, poner una columna más de datos y añadir la clave de la columna nueva en el Enum XXXXX).
 
Te reenvío el libro2 un poco maqueado. No he jugueteado más que un rato, pero tiene posibilidades el sistema. Mañana hay que trabajar, así que yo lo dejo aquí.
 
Un saludo
AdjuntoTamaño
Office spreadsheet icon libro2.xls204.5 KB

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Re: Lo prometido es deuda.

Es un trabajo de 'chinos' pero podría mejorarse así.

Luego os comento como quedó al final.

Una cosa, acuérdate de enviarme un sitio donde dirigirme para el certificado de macros, vale?

Un saludo

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Re: Lo prometido es deuda.

 

 

  "SI valor = h cambiar a
  formato Widwings y color, Si valor = i cambiar a formato widwings y otro..."

No puedo cambiar el formato de letra en función al valor, únicamente puedo cambiar el tipo y color de fuente.

Puede ser así?

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Lo prometido es deuda.

Es menos trabajo de chinos del que comentas. El trabajo de chinos es hacerlo como lo estás haciendo ahora, que para mostrar un mapa o dos es más rápido, pero cuando comiences a mostrar más mapas (tres o cuatro), pierdes "de goleada". XDD

Respecto a los de los certificados, creo que en uno de los enlaces (concretamente el de Microsoft) está explicado el proceso entero. Pero nunca lo he intentado más allá de hacer unas pruebas...

 

Lo de cambiar el formato de texto... tienes razón, con formato condicional no se puede. No se me ocurrió porque no suelo recurrir al formato condicional, prefiero hacerlo vía macro directamente.

Si me has hecho caso, ;) , las referencias ya estarían creadas (según mi modelo) y sería muchísimo más fácil de esa forma.

 

Te adjunto un ejemplo para que pruebes y veas cómo funciona lo de las referencias...

 

Option Explicit

Sub CreadorReferencias()

'Creamos 57 nombres de referencias (por comodidad las creo en la columna 1, pero es un ejemplo)

    Dim intContador As Integer

    Dim strContador As String

    Dim lgFila As Long

    Dim lgColumna As Long

    Dim strNombreHoja As String

    Dim strNombreReferencia As String

 

    strNombreHoja = "HojaXXX" 'Cambiar el nombre de la hoja según necesidad

    lgColumna = 1 'Las creo en la columna 1

    For lgFila = 1 To 57

        strContador = VBA.Format(lgFila, "00")

        ActiveWorkbook.Names.Add Name:="Dato" & strContador, _

                                 RefersToR1C1:="=" & strNombreHoja & "!" & _

                                 "R" & lgFila & "C" & lgColumna

        

        'Asigno valores a cada uno de las referencias

        strNombreReferencia = "Dato" & strContador

        Application.Range(strNombreReferencia).Value = "Menganito" & lgFila

    Next lgFila

End Sub

 

Sub ListaReferencias()

'Crea una lista de las referencias del libro...

    Dim intContador As Integer

    Dim Referencia As Excel.Name

 

    'For intContador = 1 To 300000

    intContador = 1

    On Error Resume Next 'Evita fallos si has creado y eliminado referencias... esto es una salvaguarda

    For Each Referencia In ActiveWorkbook.Names

        ActiveSheet.Cells(intContador, 2).Value = Referencia.Index

        ActiveSheet.Cells(intContador, 3).Value = Referencia.Name

        ActiveSheet.Cells(intContador, 4).Value = "'" & Referencia.RefersToR1C1 'Dirección del rango de la Referencia en formato R1C1

        ActiveSheet.Cells(intContador, 5).Value = "'" & Referencia.RefersToLocal  'Direccion del rango de la Referencia en formato A1

        

        intContador = intContador + 1

    Next Referencia

    On Error GoTo 0

    

End Sub

 

'Ahora lo fácil, una vez creadas las referencias, todo viene a pedir de boca... las cosas las puedes llamar por su nombre, directamente

Sub CambiarTipoFuente()

'Cambiamos el tipo de fuente en la referencia de nombre "Dato01"

'para este ejemplo, celda A1, de la HojaXXX

    

    Dim rgRango As Excel.Range

    Dim strNombreReferencia As String

    

    strNombreReferencia = "Dato01"

    Set rgRango = Names(strNombreReferencia).RefersToRange

    rgRango.Font.Name = "Wingdings"

    Set rgRango = Nothing

End Sub

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Uno se morirá desconociendo más de lo que conoce

Buenas tardes:

Al final la solución quedó así:

=INDICE(MapaClientes!$A$100:$T$156;15;$A$1)

donde:

         'MapaClientes'    es la hoja en la que están los datos.

         '$A$100:$T$156'    es la selección de datos que me interesan.

         '15'                    es el código postal de la provincia en cuestión ( en este caso A CORUÑA )

         '$A$1                 es la columna que me interesa muestre.

Así cuando el usuario pincha "Tendencia", el valor de A1 toma 2, que es la columna donde está este dato, cuando 'Frecuencia' A1 toma 3.... etc.

Lógico es, previamente he insertado en la situación de cada provincia ( fila y columna ) esta fórmula (no de forma manual), se puede hacer con macro.

Pero........... sigue apareciendo el 'parpadeo' y aunque no entra dentro de mis costumbres lo he dejado por imposible.

El caso es que si omito ScreenUpdating = False  no se provoca este efecto, pero claro está se ve pasar el cursor por cada rango.

En fin otro desconocimiento con el que uno se irá al otro lado.

Si se os ocurre algo.... de cualquier forma , espero esto sirva para otra gente con igual incertidumbre.

Un saludo , gracias por vuestra atención y hasta otra.

 

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

Respecto a lo de instalar las macros y que se ejecuten sin preguntar, se deberían llevar a la zona de Editores de confianza:

 

  • En Excel 2000-2003: Menú Herramientas --> Macros --> Seguridad de Macros --> Ubicaciones de confianza --> Agregar nueva ubicación
  • En Excel 2007-2010: Menú --> Opciones de Excel --> Centro de confianza --> Configuración del Centro de confianza --> Ubicaciones de confianza --> Agregar nueva ubicación

 

 

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

 

 

 

Alguien lo preguntó, pues es posible escribir a registro en sitios en los que no se debería:

http://www.technicana.com/excel-programming/219.html

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Re: Parpadeo en Excel

Y ya puestos, por aquí también se mencionó lo de crear un certificado digital, así se hace (consultar los dos enlaces que aparecen para más información):

Cargar la XLL sin recibir el aviso 'There is no digital signature available'.

Esta información y mucha más, traducida de: http://www.technicana.com/excel-programming.html

Excel mostrará un diálogo de aviso cada vez que quiera cargar una XLL no firmada. Pulsar en 'Enable this add-in for this session only' (permitir ejecutar el Add-in sólo en esta sesión) puede ser cansino después de un tiempo, especialmente cuando es una XLL que se carga frecuentemente.

Importante: - La seguridad en Windows es un tema extenso y muy importante. Consulta con un profesional antes de hacer cualquier cambio en la configuración de seguridad.

Los primeros pasos serán crear un certificado.  Hay información en creación de certificados en MSDN (http://msdn.microsoft.com/en-us/library/bfsktky3(VS.80).aspx).  Pueden usarse los siguientes comandos:

makecert -r -pe -n "CN=MENGANITO" -b 01/01/2005 -e 01/01/2010 -sky exchange -ss my

El siguiente paso es firmar el archivo binario con el certificado. Si usa el siguiente comando con el interruptor /a, busca el certificado "más" adecuado. Puede encontrar más información en la página de SingTool de MSDN (http://msdn.microsoft.com/en-us/library/8s9b9yaz(VS.80).aspx)

signtool sign /a ARCHIVO.exe

(también valdría para archivos DLL, XLL)

Una vez que la XLL está firmada, ejecuta 'certmgr' para acceder al gestor de certificados. Deberías encontrar el certificado en la primera pestaña. Exporta el certificado como archivo ".cer", luego vaya a la pestaña Trusted Publishers (Editores de confianza)  y re-importa el certificado allí.

Mientras no hayas establecido una configuración de seguridad en Excel muy rigurosa, cuando se cargue la XLL, Excel la reconocerá ahora como proveniente de un Editor de Confianza (Trusted Publisher) y la cargará sin preguntar al usuario.

 

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

xoan ninguen
Imagen de xoan ninguen
Offline
última acción: Hace 3 años 9 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 19/01/2011 - 10:03
Puntos: 835
Parpadeo...

Este es un hilo viejo y más que cerrado, pero al no poder contestarte de otra forma, lo enlazo aquí.

 

Navegando por la red me encontré con esta forma de cortar y pegar... y recordé este hilo y el problema pendiente.

Habla de un parpadeo al copiar y pegar (igual que te pasaba a ti)... con esto lo solucionan.

http://excelexperts.com/copy-values-vba

 

Un saludo. Espero que esto te llegue al email, y todavía sea de utilidad.

-----------------------------------------------------------------

www.TrazEX.com (soluciones sobre Excel)

Nado
Imagen de Nado
Offline
última acción: Hace 9 años 6 meses
alta: 17/05/2012 - 23:27
Puntos: 136
Re: Parpadeo...

Muchas gracias, por eso de que "nunca es tarde ...."