Cerrar los libros abiertos que seleccione

Estimados,

Necesito su ayuda , lo que pasa que seleccione algunos libros con getopenfile, y ahora quiero cerrar solo esos libros seleccionados, les dejo la macro para que puedan orientarme.

Application.ScreenUpdating = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
'--------------------------------------
'Abrir Libros
MiArchivo = Application.GetOpenFilename("Archivos Excel (*.xls*), *.xls*", , "Selecciona los archivos a trabajar", , True)
If TypeName(MiArchivo) = "Boolean" Then Exit Sub
For I = LBound(MiArchivo) To UBound(MiArchivo)
Workbooks.OpenText Filename:=MiArchivo(I)
Next I
'---------------------------------------
Workbooks("Planilla INWK ver 1.2.xlsm").Activate
If ActiveSheet.Name = "Datos" Or ActiveSheet.Name = "Panel" Or ActiveSheet.Name = "ReportCliente" Or ActiveSheet.Name = "Consolidado" Then
    ActiveWorkbook.Sheets("DATOS").Range("C2").Value = ""
    Unload PlanillaForm
    Exit Sub
End If
ActiveWorkbook.Sheets("DATOS").Range("C2").Value = "NO"
Reporte = ActiveSheet.Parent.Name
Call UbicacionCampos
 For I = LBound(MiArchivo) To UBound(MiArchivo) + 1
        'Buscar duplicados
        Nombrelibro = LTrim(Mid(MiArchivo(I), 1 + InStrRev(MiArchivo(I), "\")))
        Workbooks(Nombrelibro).Activate
    NCot = Range("K4").Value
    Call ContadorCel
    CantLin = vlCont - 2
    Workbooks(Reporte).Activate
    Call ContadorCel
    FinReport = vlCont + 6
    Final = FinReport + CantLin
For X = 9 To Final
    PosBus = CStr(Código) + CStr(X)
    CodRepor = Range(PosBus).Value
        If NCot = CodRepor Then
        C = 1
        End If
Next X
If C = 1 Then
vlContLib = vlContLib + 1
C = 0
Else
    Call Copiarinfo
    Call Formulas
    Call Formatos
End If
Next I
'---------------------------------
'Cerrar Libro
'For vlLibro = 1 To Fin
'If ActiveWorkbook.Parent.Name <> ThisWorkbook.Name Then
'Workbooks.Close savechanges:=False
'End If
'Next vlLibro
'---------------------------------
Workbooks(Reporte).Activate
ActiveWorkbook.Sheets("DATOS").Range("C2").Value = ""
'ActiveWorkbook.Save
'Call CerrarLibros
Unload PlanillaForm

Gracias y Saludos

Respuesta
1

Dentro del mismo módulo pon lo siguiente

For I = LBound(MiArchivo) To UBound(MiArchivo) + 1
    Nombrelibro = LTrim(Mid(MiArchivo(I), 1 + InStrRev(MiArchivo(I), "\")))
    Workbooks(Nombrelibro).Close
Next

Nota: No estoy seguro si debe llevar el "+ 1", pero prueba con y sin.

Me sale Subíndice fuera del intervalo probándolo de las dos manera con y sin +1

Le coloque un error resume next encima de esto, me cumple con el trabajo pero estara bien hacerlo de esa manera, forzando a realizar el trabajo apesar de salir error?

 Nombrelibro = LTrim(Mid(MiArchivo(I), 1 + InStrRev(MiArchivo(I), "\")))
    Workbooks(Nombrelibro).Close

Yo hice la prueba y no tengo problemas para cerrar los libros seleccionados, de hecho no necesito el +1. No sé si en alguna de tus rutinas hayas cerrado el libro.

Si solamente te cierra tus libros que seleccionaste entonces deja el on error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas