Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Programando con Macros en Excel, necesito una ayudita

ZeroFinished
post Aug 18 2006, 04:30 AM
Publicado: #1


Estudiante Otra Vez
Group Icon

Grupo: Miembros Vitalicios
Mensajes: 534
Registrado: 28-September 04
Desde: Copiapó - Chile
Miembro nº: 21.706



Hola a todos.

He confeccionado un programa en excel a base de código de visual basic y todo marcha bien, pero cuando ejecuto un botón por ejemplo para confeccionar un reporte mensual la confección de dicho reporte demora mas o menos 20 segundos. En el transcurso de la operación la macro juega mucho con las ventanas activas comparando valores de un libro a otro, abriendo nuevos libros de excel, recopilando datos y finalmente generando hojas en vista previa para la impresión.

Para mi está bien, pero para el usuario es desagradable ver la pantalla en donde se cambian hojas, se recorren celdas, se cambian a otros libros (dentro del mismo excel por si acaso) y todo en 20 segundos......

Entonces..............

Abrá una forma de mostrar una pantalla que el usuario vea mientras se realiza el proceso? algo así como "Espere mientras se genera el reporte".

Saludos.


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Aug 18 2006, 06:06 PM
Publicado: #2


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.623
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



Si se puede, y mas facil si ya conoces el tiempo anticipado en segundos, nunca he manejado Visual Basic para aplicaciones pero en Visual Basic seria algo asi

-Agrega un control Timer y le pones de intervalo 1000 y en enabled = false
-Declaras una variable a nivel formulario tipo byte y en el load la inicializas a 20
CODE
Dim x as byte
Private Sub Form_Load()
   x = 20
End Sub

-Agregas un form y le pones una etiqueta que diga espere por favor o algo asi
-Despues en el codigo del boton para generar el reporte pones que se muestre dicho form en forma modal, y se active el timer ej.
CODE
frmSplash.show vbModal
timer1.enabled=true

-Despues en el codigo del Timer quedaria mas o menos asi
CODE
Private Sub Timer1_Timer()
   If x = 0 Then
       Timer1.Enabled = False
       Unload frmSplash
       Exit Sub
   End If
   x = x - 1
End Sub


Espero lo puedas adaptar al vb que trae excel

Saludos thumbsup.gif


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ZeroFinished
post Aug 19 2006, 12:22 AM
Publicado: #3


Estudiante Otra Vez
Group Icon

Grupo: Miembros Vitalicios
Mensajes: 534
Registrado: 28-September 04
Desde: Copiapó - Chile
Miembro nº: 21.706



Que tal amigo Rob.

El código ejemplo que has puesto es super buena idea pero si te fijas el control Timer solamente está disponible en Visual Basic y no en Excel. Si entras al Excel y ves el cuadro de controles de la barra "Formularios" están solo unas cuantas herramientas.
Estuve intruseando en la opción "agregar o quitar botones" y encontré un Progressbar el cual me podría servir pero no tengo como enlazarlo puesto que necesitaría del control Timer.

Ahora si estuviera en Visual basic podría crear un formulario y un Timer con un tiempo determinado para que muestre una pantalla de mensaje... sería genial, pero no puedo hacerlo ahora porque excel es muy limitado al momento de usarlo para construir un programa.

Si tienes otra recomendación te lo agradeceré mucho.

Saludos.



User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Aug 20 2006, 06:26 PM
Publicado: #4


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.623
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



mad.gif Tienes razon por mas que busque un control Timer en VBA no existe, no se porque, se me hace muy raro y la info en internet sonre VBA es muy escasa (sera porque casi nadie lo usa notengoidea.gif )... talvez lo puedas hacer con un for pero la vdd no sabria como controlar los segundos.
Mira buscando por internet, mas precisamente en google "Timer excel ocx" me encontre con esto: Excel Timer, ojala te sirva..

Un saludo thumbsup.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ZeroFinished
post Aug 31 2006, 05:18 AM
Publicado: #5


Estudiante Otra Vez
Group Icon

Grupo: Miembros Vitalicios
Mensajes: 534
Registrado: 28-September 04
Desde: Copiapó - Chile
Miembro nº: 21.706



Jejejejeje. Como veo que hay mas de 100 visitas a esta discusión no podía dejar esto a medias.

Para los que estén interesados en crear macros en excel y les resulte molesto los parpadeos de pantalla cuando hay mucho codigo de visual basic metido de por medio. esto les va:

QUOTE
Cuando se ejecuta una macro de Excel aparece en pantalla el cursos y las celdas marcadas, así como todas las actuaciones que lleve a cabo la macro.
Para que no se produzca este refresco de pantalla durante la ejecución de las macros (es decir, que no se vea qué está haciendo), basta con incluir al comienzo del código de la macro la siguiente línea: Application.ScreenUpdating = False

Para restablecer el refresco de pantalla, basta con asignarle el valor True.


biggrin.gif biggrin.gif

Ahora averiguaré como se coloca un gif animado mientras se ejecutan los procesos.

Gracias a todos en especial a rob por su voluntad.

Saludos.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
Closed TopicTopic OptionsStart new topic

Collapse

> Topicos similares

Lista desplegable en Excel Lizz 216 2 Jul 12 2008, 05:24 PM
By: Lizz
Excel pitufo_111 164 8 Jul 9 2008, 04:00 PM
By: pitufo_111
Tutorial para EXCEL 2003 Y para VISUAL BASIC 6.0 ederth666 871 3 Jun 24 2008, 05:15 PM
By: ole1105
FICHERO DE WORD,EXCEL Y ACROBAT NO APARECEN CON ... ATABADAJOZ 374 4 Jun 13 2008, 08:31 PM
By: ATABADAJOZ
OpenOffice 2.3 ó Word, Excel, Power Point... Aitzi801 312 1 Jun 13 2008, 02:05 PM
By: Vera

Google
Web www.trucoswindows.net