Macro en Excel. Cada dia abro un archivo txt con diferente nombre del cual extraigo informacion y necesito cerrarlo

Solo tengo mi archivo excel abierto el cual es una hoja en la que guardo informacion dia por dia. El archivo txt lo abro para sacar cierta informacion y despues tengo que cerrarlo porque ya no lo necesito.

La macro que hice me pide el nombre del archivo guardado en la macro y en realidad el archivo abierto al dia siguiente tiene otro nombre.

1 respuesta

Respuesta

¿Y cuál es tu macro?

Abraham Valencia

Sub COG()
'
' COG Macro
'
' Keyboard Shortcut: Ctrl+Shift+C
'
Range("A5:H20006").Select
Selection.ClearContents
Range("A5").Select
name_f = Application.GetOpenFilename("Archivos de sps (*.*),*.*", , "Abrir Archivo COG", , False)
If name_f = False Then
Exit Sub
End If
Workbooks.OpenText Filename:= _
name_f, Origin:=437, StartRow:=29, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(3, 1), Array(17, 1), Array(24, 1), Array(28, 1), Array(38, 1), Array(49, _
1), Array(56, 1), Array(73, 1)), TrailingMinusNumbers:=True
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Windows("CR macros.xlsm").Activate
ActiveSheet.Paste
Range("D2:E2").Select
Windows("S-62a_2017_10_26_955800001_2D.COG").Activate
ActiveWorkbook.Close
End Sub

Como para iniciar, siempre recomiendo no usar/abusar del Select y el Selection. Aquí algo al respecto:

https://abrahamexcel.blogspot.pe/2017/12/el-uso-y-abuso-de-select-y-selection-en.html 

Segundo ¿que es un archivo *. COG? ¿es un *.LOG modificado? ¿Son datos de SolodWorks tipo texto? Eso solo para tratar de, terminar, de entender.

Tercero, si lo que seleccionas con el GetOpenFileName y luego abres con el WorkBooksOpen es justamente un archivo *. COG entonces asumo que el libro con esa extensión que "activas" en tu macro, casi al final, se supone que es ese, entonces, de ser así, deberías colocar:

Windows(name_f).Activate

Aunque yo sería partidario de no "activarlo: sino de cerrarlo así:

Workbooks(name_f).Close SaveChanges:=False

Comentas

Abraham Valencia

Hola Abraham,

En nuestro caso el archivo texto o ascii contiene información de coordenadas y tiene la extensión COG porque la información contenida se refiere a Centre of Gravity.

Usamos la opción del Select (sin ruta y nombre de archivo) porque el archivo cambia de carpeta constantemente y cada día cambia de nombre.

El nombre del archivo S-62a_2017_10_26_955800001_2D.COG cambia de nombre por los siguientes motivos:

S-62A: Unidad Operativa (hay 10 unidades).

2017_10_26: reporte del día 26 de octubre y en noviembre el 10 será 11 y el próximo año sera 2018.

955800001: cada semana aprox, este código cambia.

El comando sugerido Workbooks(name_f).Close SaveChanges:=False dio error de Debug y es resaltado cuando entro a ver donde es el error.

¿Es posible que compartas al menos uno de los archivos mencionados para probar cómo hacer?

Abraham Valencia

Abraham, como adjunto el archivo?

Aquí no se puede. Súbelo a Google Drive o OneDrive o DropBox...

Abraham Valencia

Abraham, te adjunto parte del archivo texto.

ID Line Point Index State Easting Northing Elevation Deviation

C  9509.0  2302.  1  3   777987.9  2165262.9  480.2  1.9

Ignorar el decimal del Point.

C 9509.0 2302.21 3 777987.9 2165262.9 480.2 1.9
C 9509.0 2996.51 3 771076.4 2173054.0 460.8 0.0
C 9509.0 2302.51 3 777984.0 2165266.4 480.5 1.4
C 9509.0 2996.81 3 771073.5 2173057.5 461.0 0.5
C 9509.0 2302.81 3 777979.5 2165269.6 480.7 1.6
C 9509.0 2997.21 3 771070.3 2173061.3 461.3 0.6
C 9509.0 2303.21 3 777975.8 2165272.4 481.0 1.3
C 9509.0 2997.51 3 771067.2 2173064.9 461.6 0.8
C 9509.0 2303.51 3 777971.8 2165275.6 481.0 0.7

Simplemente tengo que abrir el archivo texto con la macro, copiar los datos en columnas a un archivo excel donde tengo la macro, y luego cerrar el archivo txt. Al dia siguiente abrire un archivo similar pero con distinto nombre.

Modifiqué algunas cosas (aunque si tuviese tus archivos creo que cambiaría más), pero prueba así:

Sub COG()
' COG Macro
Dim name_f  As String, Nombre As String
Range("A5:H20006").ClearContents
Range("A5").Select
name_f = Application.GetOpenFilename("Archivos de sps (*.*),*.*", , "Abrir Archivo COG", , False)
If name_f = False Then
Exit Sub
End If
Workbooks.OpenText Filename:= _
name_f, Origin:=437, StartRow:=29, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(3, 1), Array(17, 1), Array(24, 1), Array(28, 1), Array(38, 1), Array(49, _
1), Array(56, 1), Array(73, 1)), TrailingMinusNumbers:=True
ActiveSheet.UsedRange.Copy
Windows("CR macros.xlsm").Activate
ActiveSheet.Paste
Range("D2:E2").Select
Let Nombre = Mid$(name_f, InStrRev(name_f, "\") + 1)
Windows(Nombre). Close
ActiveWorkbook. Close 'no sé si ya te sea necesaria esta línea
End Sub

Comentas

Abraham Valencia

Abraham,

Espero hayas pasado una bonita Navidad. Con respecto a la macro encontre la manera de cerrar el archivo que habro por un minuto para sacar informacion y que despues ya no necesito.

ActiveWindow.ActivatePrevious
ActiveWorkbook.Close

Saludos,

Luis Martinez

Feliz navidad también para ti :)

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas