Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: egrimm en 11 Febrero 2010, 12:10 pm



Título: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 12:10 pm
Hola buenas, no suelo postear mucho pero en este caso necesito ayuda urgente, nos han mandado una macro para clase muy simple, pero que me esta ropiendo los huevos.
Basicamente la macro tiene que cargar los documentos en un listbox y de alli pasar a otro listbox los documentos con los que trabajaremos, esos documentos los tiene que minimizar (tiene un poco mas de chicha la macro pero esto es lo importante) el problema es que cuando utilizo "Application.WindowState = wdWindowStateMinimize" el resultado NADA no hace ambsolutamente nada. El siguiente codigo es uno que utilizo para probar wdWindowStateMinimize pero no hace nada de nada
Código:
Private Sub CommandButton1_Click()
'Boton de prueba recorre el listbox
For x = 0 To boxizq.ListCount - 1
'activa la ventana y la minimiza
    Windows(boxizq.List(x)).Activate
    Application.WindowState = wdWindowStateMinimize
Next x
End Sub
Y aqui va el codigo que realmente tengo que entregar pero que ni a la de tres funciona
Código:
Private Sub Bordenar_Click()
'recorremos todas las ventanas de documentos word
For x = 1 To Application.Windows.Count
    'y con cada una de ellas recorremos el listbox
    For i = 0 To boxizq.ListCount - 1
        'para comparalos
       If Application.Windows(x).Caption = boxizq.List(i) Then
       'si coicide activamos el documento
       Windows(x).Activate
       'le damos el formato a la ventana
       Application.WindowState = wdWindowStateNormal
       Application.Windows(x).Left = 0
       Application.Windows(x).Top = (x * 20)
       Application.Windows(x).Height = Application.System.VerticalResolution
       Application.Windows(x).Width = Application.System.HorizontalResolution
       End If
    Next i
Next x
Print lo; mismo; para; minimizar; los; documentos; sobrantes
For x = 1 To Application.Windows.Count
    For i = 0 To Boxder.ListCount - 1
        If Application.Windows(x).Caption = Boxder.List(i) Then
        Windows(x).Activate
        Application.WindowState = wdWindowStateMinimize
        End If
    Next i
Next x
End Sub
El listbox lo cargo desde la funcion
Código:
Private Sub cargar()
    For x = 1 To Application.Windows.Count
        boxizq.AddItem (Application.Windows(x).Caption)
    Next
End Sub


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: Novlucker en 11 Febrero 2010, 12:16 pm
Entonces? adivinamos cual es el problema con la macro? :silbar:

Saludos


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 12:26 pm
perdon pero lo publique sin queren antes de tiempo XD
Por cierto utilizo office 2007 (no se si tendra nada que ver pero bueno)
Si alguien tiene un buen tutorial de macros para office me haria un gran favor dado la escaces de material "util" que encontrado en internet
Saludos y gracias por la atencion.


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: Novlucker en 11 Febrero 2010, 12:47 pm
Hay algo que no me queda claro, esta macro donde esta? la tienes en el word por medio de un módulo en el VBA?

Saludos


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 12:51 pm
La macro la cree en el editor de macros que trae por defecto office, en un modulo que carga el userform
(Si digo alguna burrada perdoneme :P)


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: Novlucker en 11 Febrero 2010, 13:05 pm
Esta bien, es el editor de VBA que he nombrado :P

Application.WindowState
  • xlMaximized
  • xlMinimized
  • xlNormal

El tamaño de la ventana no estoy seguro que se pueda asignar así como así, creería que solo lo puedes visualizar

Saludos


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 13:27 pm
Quedari mas o menos asi no?
Código:
Private Sub CommandButton1_Click()
'Boton de prueba recorre el listbox
For x = 0 To boxizq.ListCount - 1
'activa la ventana y la minimiza
    Windows(boxizq.List(x)).Activate
    Application.WindowState = xlMinimized
Next x
End Sub
La cosa es que sigue sin funcionar, debe ser que VB me tiene alergia.
Tiene wasa la cosa pq con el grabador de macros de word lo hize y me da esto:
Código:
    Windows("1Asdfasdfasdfasdf").Activate
    Application.WindowState = wdWindowStateMaximize
    Application.WindowState = wdWindowStateNormal
lo que me pone de los nervios ya que esto si funciona XD
El tamaño se ve que si se le puede asignar con system.verticalresolution pero el caso es que si esta maximizada o minimizada da error XD me rio por no llorar


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: Novlucker en 11 Febrero 2010, 13:35 pm
Lo acabo de grabar y me ha dado lo que he puesto arriba, y ahora que veo, SI se puede poner las dimensiones de la ventana, pasa que no puede estar ni maximizada, ni minimizada, tiene que estar normal :P

Código
  1. Application.WindowState = xlNormal
  2. Application.Width = 400
  3. Application.Height = 200

Saludos


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 13:55 pm
Por curiosidad que version de office utilizas?

El problema no creo que sea que utilizo wdWindowState o xl, pero no se me ocurre donde la estoy cagando.
Novlucker gracias por todos tus apoprtes si se te ocurre que puede ser me salvas el culo ;)


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: Novlucker en 11 Febrero 2010, 14:03 pm
La que aún usa todo el mundo ... 2003

Además de que los valores para los estados de la ventana te lo da el propio editor de VBA

Saludos


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 14:18 pm
La verdad si pudiera utilizaria 2003 pero nos obligan a usar 2007 ya que corrige con ella y nos examina con ella. A parte los documentos en modo compatibilidad del  03 tratados en el 07 me estan dando mas de un disgusto.


Título: Re: HELP!! Macro de word en VB6.0
Publicado por: egrimm en 11 Febrero 2010, 17:17 pm
JAJA encontre el fallo, os podeis creer que fuero por no poner: "unload userform1" :o
No veo muy claro el porque pero si asi no se me queja pues adelante con el.

Muchas gracias a todos por la atencion en especial a Novlucker ;-)

Si alguien necesitara codigo para para la gestion & manipulacion de  de ventanas encatado os mando el codigo

Un saludo a todos los del foro.