Como cerrar un libro de excel por VBA

Tengo una macro que me abre varios archivos txt y les hace texto en columnas y los unifica para que queden todos en una sola base los txt tiene los nombres de 1 (1) y asi van en incremento según la cantidad que tenga he hecho un ciclo para que los habrá y luego los vaya pegando pero quiero que después de pegar la información en el orden dado para que abran y se cierre después de pegarlos tengo el comando Workbooks(strHoja). Close True pero no me cierra ninguno solo funciona cuando coloco el for en 1 to 1 pero cuando lo coloco mas amplio me habré todos y no cierre ninguno agradezco me colabores con este tema mil gracias de antemano.

Sub Abrir_Pegar()
'
' Abrir_Pegar Macro
'
'
strHoja = Range("J1")
On Error Resume Next
For i = 1 To 27
Windows("Macro Adjuntar Txt.xlsm").Activate
Sheets("Hoja1").Select
Range("K1").Select
ActiveCell.FormulaR1C1 = i
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\mdguevara\Escritorio\Gestion_Etiquetas\" + Range("J1"), _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _
, 1)), TrailingMinusNumbers:=True
Range("A2:G2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Macro Adjuntar Txt.xlsm").Activate
Sheets("Hoja1").Select
Range("a2").Select
Do While Not IsEmpty(ActiveCell)
If ActiveCell = "" Then
Exit Sub
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Windows(strHoja).Activate
Workbooks(strHoja).Close True
Next i
End Sub

1 respuesta

Respuesta

Si te fijas en tu código, siempre estas capturando el nombre del archivo a abrir desde la celda J1 del libro de consolidación, y este nombre nunca cambia (!), por tanto solo procesabas un archivo, te dejo el código modificado que hace lo que necesitas. Me cuentas como te va (no está exento de errores, ya que puede que hayamos dejado alguna consideración por fuera). Saludos

 
Sub Abrir_Pegar()
''Modificada en 120307 por FSerrano
''para marlonguevar en TodoExpertos.com
On Error GoTo fin
For i = 1 To 27
    strHoja = i & ".txt"
    Workbooks("Macro Adjuntar Txt.xlsm").Sheets("Hoja1").Range("K1").FormulaR1C1 = i
    Workbooks.OpenText Filename:= _ 
    "C:\Documents and Settings\mdguevara\Escritorio\Gestion_Etiquetas\" & strHoja, _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
    Comma:=False,Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
    Array(Array(1,1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _
    , 1)), TrailingMinusNumbers:=True
    ActiveSheet.Range("A2:G2").Select
    Range(Selection, Selection.End(xlDown)).Copy Destination:=Workbooks("Macro AdjuntarTxt.xlsm").Sheets("Hoja1").Range(Cells(Application.WorksheetFunction.CountA(Workbooks("MacroAdjuntar Txt.xlsm").Sheets("Hoja1").Range("A:A")) + 1, 1).Address)
    Application.CutCopyMode = False
    Workbooks(strHoja).Close
Next i
fin:
End Sub 

(La macro considera que el nombre de los archivos es numérico y coincide con el contador que se usa, empieza en 1 y aumenta en una unidad hasta 27)

No olvides finalizar y puntuar la pregunta

que tal experto verificando la modificación que hiciste no me corre la macro ni siquiera abre el primer libro con la mia funciona sin problemas la cuestión es como hago para cerrar todos esos libros me puedes validar muchas gracias.

He probado la macro y me funciona correctamente, ten presente que la debes lanzar desde un archivo llamado Macro Adjuntar Txt y salvarlo como libro Excel habilitado para macros, ya que es a este archivo donde se copiaran los datos, si el archivo no existe, el proceso enfrentara un error y acabara el proceso.

La instrucción para cerrar el libro es

Workbooks(strHoja). Close

Revisa esto y me comentas como te va.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas