Excel: Mediante VBA como listo los libros abiertos en el menú "Ventana" ...

27/07/2004 - 17:37 por Sergio L. | Informe spam
No se si se entiende, quiero listar los archivos abiertos para que el
usuario elija uno para trabajar y ahí aplicar una rutina.
Alguien me puede ayudar ?
Desde ya muchas gracias por su tiempo.
 

Leer las respuestas

#1 Héctor Miguel
29/07/2004 - 03:54 | Informe spam
hola, Sergio !

... quiero listar los archivos abiertos para que el usuario elija uno ... y ... aplicar una rutina.



[creo que lo 'mejor' es...] 'presenta' la lista de los archivos abiertos en un formulario
[solo se requiere que el formulario tenga un control listbox y un commandbutton]

- si te decides por esta 'opcion'... te expongo un ejemplo al final ;)
- otra opcion seria usar un dialogo incorporado... =>Application.Dialogs(xlDialogActivate).Show< [tiene el 'inconveniente' de que incluye complementos -addin- y libros cuya ventana esta 'oculta'] :(
[ademas de que una vez efectuada la 'seleccion'... activa el libro seleccionado -toda vez que sea 'posible'-]
- otra posibilidad seria usando macros y reglas de validacion en [alg]una celda ANTES de ejecutar la rutina ;)
si te interesa de esta forma... [es algo mas 'complicadillo' de 'simplificar']... '¿avisas?

saludos,
hector.
¨¨¨¨¨¨¨¨¨¨
suponiendo un formulario con un control listbox y un commandbutton [para 'captar'] la seleccion...
en el modulo de codigo del formulario ==' antes de 'presentarse' el formulario... se 'toman' los libros abiertos '
Private Sub UserForm_Initialize()
Dim Libro As Workbook
For Each Libro In Workbooks
Me.ListBox1.AddItem Libro.Name
Next
End Sub
' => se incluyen los libros [NO addin] con ventana 'oculta' _
si los necesitas NO incluir... cambia 'dentro' del for... a:
' => If Windows(Libro.Name).Visible Then Me.ListBox1.AddItem Libro.Name
Private Sub CommandButton1_Click()
' para 'detectar' si el usuario ya ha efectuado una seleccion...
If Me.ListBox1.ListIndex > -1 Then
' para 'tomar' el nombre del libro seleccionado ... _
cambia el msgbox por alguna variable o lo que necesites ;)
MsgBox "Se ha seleccionado: " & Me.ListBox1.List(Me.ListBox1.ListIndex)
End If
End Sub

Preguntas similares