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:

image

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

:: Descargar ejemplo

:: Descargar EXCELeINFO 2.2.6

You may also like...