Cerrar varios archivos a la vez en Excel
Se añade una nueva funcionalidad al Add-in, llamada Cerrar varios archivos a la vez, que nos permite elegir los archivos a cerrar.
Comportamiento:
Se muestra un formulario con un ListBox donde se enlistan todos los archivos abiertos, así como la propiedad Visible de cada uno. Cuenta con dos CheckBoxes, uno que nos permite elegir todos los elementos de la lista, y otro que da la opción de elegir si queremos que Excel nos advierta sobre los archivos que no han sido guardados.
Formulario en acciòn:
También comparto el código vba del formulario para que nos demos cuenta del uso y manipulación de LisBoxes, ventanas y archivos de Excel:
'--------------------------------------------------------------------------------------- ' Module : frmCerrarMultiplesArchivos ' Author : Sergio A Campos H ' Date : 21/05/2011 ' Purpose : Cerrar varios archivos a la vez '--------------------------------------------------------------------------------------- ' Private Sub CheckBox2_Click() 'Elegir todas las opciones de todos los archivos On Error Resume Next If CheckBox2.Value = True Then For i = 0 To ListBox2.ListCount ListBox2.Selected(i) = True Next i Else For i = 0 To ListBox2.ListCount ListBox2.Selected(i) = False Next i End If End Sub ' Private Sub CommandButton1_Click() 'Cerrar formulario Unload Me End Sub ' Private Sub CommandButton8_Click() 'Llama al prodedimiento para cerrar las ventanas seleccionadas Call CerrarLibros End Sub ' Private Sub UserForm_Initialize() Call LlenarListasTodosLibros End Sub 'Procedimiento para cerrar archivos Sub CerrarLibros() Cuenta = ListBox2.ListCount numero = 0 For j = 0 To Cuenta - 1 If ListBox2.Selected(j) = True Then numero = numero + 1 End If Next j If numero <> 0 Then Resp = MsgBox("Desea cerrar los archivos seleccionados?", vbYesNo + vbQuestion, "EXCELeINFO") If Resp = vbNo Then Exit Sub Application.ScreenUpdating = False ACTUAL = ActiveWorkbook.Name primera = True On Error Resume Next Application.DisplayAlerts = CheckBox3.Value For i = 0 To Cuenta - 1 If ListBox2.Selected(i) Then Text = ListBox2.List(i) Workbooks(Text).Close Else If ListBox2.Selected(i) <> True Then End If End If Next i Sheets(1).Select Unload Me Workbooks(ACTUAL).Activate Application.StatusBar = False Application.ScreenUpdating = True End If Exit Sub ErrorHandler: Workbooks(ACTUAL).Activate Application.StatusBar = False Application.ScreenUpdating = True MsgBox "Ha ocurrido un error: comprueba que no hayas elegido alguna hoja oculta. " & err.Description, vbExclamation, AddIn End Sub ' 'Enlistar el nombre de la ventana en el ListBox Sub LlenarListasTodosLibros() 'Todos los archivos ListBox2.Clear suma1 = 0 For i = 1 To Application.Windows.Count ListBox2.AddItem Windows(i).Caption Select Case Windows(i).Visible Case Is = True Ver = "Visible" Case Is = False Ver = "No visible" suma1 = suma1 + 1 End Select ListBox2.List(ListBox2.ListCount - 1, 1) = Ver Next i Label2.Caption = "Archivos: " & ListBox2.ListCount & vbNewLine & "Archivos ocultos: " & suma1 CheckBox3.Value = True End Sub