En el ejemplo siguiente utilizaremos los archivos de backup generados por un sistema de control y los organizaremos en Excel, útil para documentaciones o migraciones de sistemas de control.
Documentación de la información de código fuente de un sistema de control (útil para migraciones)
Algunas veces los backups o exportaciones de las lógicas de control de diferentes sistemas se pueden leer por medio de programas de lectura de texto como notedpad, wordpad, etc. Esto nos permite visualizar el contenido de la lógica y de alguna manera interpretarla, lo cual ayuda mucho especialmente en migraciones de sistemas de control.
Aunque estos programas nos permiten visualizar la información, también es útil poder organizarla para obtener listas de entradas y salidas y la clasificación de los diferentes tipos de lógicas, como controles PIDs, motores, válvulas, monitoreo analógico, monitoreo digital, caracterizadores, compensadores, cálculos, bloques de código, etc. También nos permite obtener listas de parámetros de los diferentes tipos de lógicas mencionados.
En este caso, mostrare como podemos obtener una lista en Excel de las referencias externas de cada lógica, tag o módulo de control.
Abrir archivos de código o texto en Excel
Para abrir los códigos fuente en Excel, primero hay que definir la dirección donde se encuentran los archivos. Para esto creamos una lista en Excel con las ubicaciones de los códigos fuente.
Ver como crear lista de archivos contenidos en un folder.
Ver como crear lista de archivos contenidos en un folder.
Luego en la pestaña de Developer, damos click en Visual Basic y seleccionamos la hoja excel donde creamos la lista de ubicaciones y escribimos el siguiente código que permite:
Leer los archivos de texto o codigo en excel
Crear columna con los nombres de los archivos.
Filtar el texto contenido en los archivos.
Organizar por filas y columnas el texto filtrado.
Sub Leer_Filtrar_Texto()
Dim archivo As String 'ruta y nombre del archivo definidos en la lista
Dim texto As String 'línea de texto o codigo a leer
Dim fila As Integer 'fila donde se colocara el texto en la hoja de excel
Dim filaCL As Integer 'fila donde se colocara el nombre del archive
Dim colunma As Integer 'columna donde se colocara el texto en la hoja de excel
fila = 1
filaCL = 1
ActiveSheet.Range("A2").Select 'Primera celda de la lista de unbicaciones de archivos'
Cells(1, 2).Value = "ID_CL" 'Se coloca el titulo ID_CL en la fila 1 columna 2
Do While Not IsEmpty(ActiveCell) 'Lazo para recorrer la lista de ubicaciones
fila = fila + 1filaCL = filaCL + 1
archivo = ActiveCell.Value 'se asigna a la variable archivo el valor de la celda actual
Open archivo For Input As #1 'leer un archivo de texto por el canal #1
columna = 2 'los nombres de los archivo los colocamos en la columna 2
'Leer y procesar el contenido del archive
While Not EOF(1) 'la función EOF regresa verdadero al llegar al final del archivo
'Creamos la columna 2 con los nombres de los archivos
If archivo Like "*CL Files*" Then
archivo = Replace(archivo, "C:\CL Files\Folder1", "")
End If
Cells(filaCL, 2).Value = archive
Line Input #1, texto 'lee cada una de las líneas del archivo y las almacena en la variable texto
'Filtramos el texto para que solo muestre las lineas que definen las referencias externas
If texto Like "*EXTERNAL*" Then
'Removemos el texto EXTERNAL de la linea
texto = Right(texto, Len(texto) - InStr(texto, "EXTERNAL") + 1)
texto = Replace(texto, "EXTERNAL ", "")'Eliminamos cualquier otro especio que haya a la izquierda
Do While Left(texto, 1) = " "
texto = Replace(texto, " ", "")
Loop
columna = columna + 1
If texto Like "* *" Then
texto = Left(texto, InStr(texto, " ") - 1)
End If
'Colocamos la referencia encontrada en la celda correspondiente
Cells(fila, columna).Value = texto
'Colocamos los titulos de las columnas de referencias
Cells(1, columna).Value = "EXTERNAL_REF" & columna - 2
End If
Wend
'Cerrar el archivo de entrada
Close #1
ActiveCell.Offset(1, 0).Select
Loop
End Sub
El código anterior genera la siguiente tabla, donde se listan las referencias externas de cada uno de los códigos .CL definidos:
No hay comentarios.:
Publicar un comentario