Al automatizar la importación de archivos XML en un proyecto de SIMOTION SCOUT mediante un script VBA, los errores de ejecución al intentar eliminar o importar unidades suelen deberse a una sintaxis incorrecta en la llamada a los métodos del modelo de objetos. Para solucionar el fallo, debe eliminar el espacio en blanco inválido entre el objeto y el método (por ejemplo, cambiar Units. Remove a Units.Remove) y ajustar el parámetro booleano de la función de eliminación a True, asegurando que la unidad existente se elimine correctamente antes de procesar el nuevo archivo.
Tabla de contenido
- Síntomas del error de importación XML
- Por qué ocurre el fallo en el script
- Corrección del código VBA
- Verificación
- Limitaciones y precauciones operativas
- Preguntas frecuentes
- Artículos relacionados
- Etiquetas relacionadas
Síntomas del error de importación XML
Durante la ejecución de una macro o un script VBA activado mediante un botón de comando (commandbutton_click), el proceso se detiene y devuelve un error del sistema. El mensaje de error (capturado por una función de manejo de errores personalizada como ErrorMessage) señala que el fallo se origina específicamente en las líneas que contienen las instrucciones Units. Remove o Units. Import. Como resultado, los archivos XML ubicados en el directorio temporal no se transfieren al proyecto de SIMOTION SCOUT.
Por qué ocurre el fallo en el script
El error se produce principalmente por dos desviaciones en la sintaxis estándar de VBScript/VBA al interactuar con la API de simotion.application:
- Espacios en blanco ilegales: El código original incluye un espacio después del punto calificador del objeto (
Units. RemoveyUnits. Import). En VBA, el compilador no reconoce el método si existe un espacio separando el objeto de su función. - Parámetro de eliminación incorrecto: El método de eliminación requiere confirmar la sobrescritura o la eliminación forzada. El código original envía el parámetro
False, lo que puede evitar que la unidad temporal (sTmp) se elimine si está en uso o protegida. La solución confirmada establece este parámetro enTrue(oTRUE).
Corrección del código VBA
Para que el bucle For Each procese correctamente los archivos y actualice las unidades en el dispositivo (por ejemplo, el modelo "D435"), modifique la sintaxis de los métodos.
Código original con fallos de sintaxis
VBScript
' Código incorrecto que genera el error:
If ScoutUnit.Name = sTmp Then
Units. Remove sTmp, False
If Err.Number <> 0 Then
ErrorMessage Err.Number, Err.Description
End If
Exit For
End If
Next
Units. Import folder & "\" & file.Name, "nocompile"
Código corregido
Elimine los espacios e implemente el parámetro booleano correcto. Asegúrese también de pasar correctamente la variable o la cadena de texto (el método exacto propuesto en la fuente para forzar la cadena es "sTmp", aunque si utiliza la variable dinámica, omita las comillas).
VBScript
' Código corregido:
If ScoutUnit.Name = sTmp Then
Units.Remove sTmp, True
If Err.Number <> 0 Then
ErrorMessage Err.Number, Err.Description
End If
Exit For
End If
Next
Units.Import folder & "\" & file.Name, "nocompile"
Verificación
El procedimiento se realizó correctamente cuando:
- El script finaliza su ejecución y muestra el cuadro de mensaje emergente con el texto "Erfolgreich! Successful".
- No se activan las rutinas de manejo de errores durante el bucle de los archivos de la carpeta.
- Al revisar el árbol del proyecto en el software SIMOTION SCOUT, las unidades correspondientes a los archivos XML aparecen correctamente importadas dentro del dispositivo de destino.
Limitaciones y precauciones operativas
- Referencia del objeto Units: En el contexto del script, los métodos
RemoveeImportasumen que el objetoUnitsestá correctamente calificado o implícito en un bloqueWith. Asegúrese de que el objeto padre (el dispositivo de SIMOTION) esté correctamente referenciado antes de llamar a la colección de unidades. - Manejo de errores (Err.Clear): El código utiliza
On Error Resume Nextde forma implícita al comprobarErr.Number <> 0. Asegúrese de incluirCall Err.Clear()antes de iniciar bucles críticos para evitar que arrastre un número de error de una operación anterior. - Nombres de archivo: El script utiliza
Left(file.Name, Len(file.Name) - 4)para extraer el nombre de la unidad excluyendo la extensión.XML. Esto fallará si el sistema de archivos oculta las extensiones o si la extensión tiene un número diferente de caracteres.
Preguntas frecuentes
¿Qué tipo de archivos procesa este script en SIMOTION SCOUT?
El script está diseñado para leer una carpeta local (por ejemplo, E:\temp), buscar archivos con la extensión .XML y transferir su contenido como nuevas unidades lógicas dentro del árbol del dispositivo de un proyecto SCOUT.
¿Por qué se busca la unidad antes de importarla?
El script recorre las unidades existentes en el dispositivo (mediante PROJ.Devices("D435").Units). Si encuentra una unidad con el mismo nombre que el archivo XML que está a punto de importar, ejecuta el método Units.Remove para eliminar la versión anterior y evitar un error de duplicidad durante la importación.
¿Qué hace el parámetro "nocompile" en la importación?
El parámetro "nocompile" pasado a la función Units.Import le indica a la aplicación SIMOTION que importe la fuente del programa en el proyecto sin desencadenar una compilación automática e inmediata del código, lo que ahorra tiempo de procesamiento cuando se importan múltiples archivos de forma secuencial.
Artículos relacionados
- Cómo automatizar tareas de proyecto en SIMOTION SCOUT mediante scripts
- Uso de la interfaz COM para acceder a proyectos de SIMOTION SCOUT
- Gestión de importación y exportación de unidades XML en controladores Siemens
Etiquetas relacionadas
Code: C158