用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill vba-industrial-excel命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | vba-industrial-excel |
| description | Scripter en VBA pour automatiser l'ingénierie sous Excel. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["windows"] |
| metadata | {"tags":["vba","excel","scripting","automation","engineering","import-export","tia-portal","studio-5000","macros"],"related_skills":["industrial-programming-languages","industrial-exchange-formats"]} |
Cette compétence régit le développement de macros Visual Basic for Applications (VBA) sous Microsoft Excel. Excel sert de pivot d'ingénierie pour générer automatiquement du code automate, structurer des listes d'E/S, formater des alarmes SCADA ou valider des nomenclatures électriques.
Le scripting d'ingénierie manipule fréquemment des milliers de lignes de variables. Sans optimisation, l'appel répété de cellules via le modèle d'objet d'Excel ralentit dramatiquement l'exécution.
Public Sub StartIndustrialProcess()
' Desactivation des calculs et de la mise a jour de l'ecran
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
On Error GoTo ErrorHandler
' --- APPEL DE LA LOGIQUE D'INGÉNIERIE ---
Call GenererTagsPLC
CleanExit:
' Re-activation imperative des fonctionnalites Excel
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
ErrorHandler:
MsgBox "Erreur d'execution : " & Err.Description, vbCritical
Resume CleanExit
End Sub
Excel est couramment utilisé pour exporter des tables d'E/S vers des fichiers importables par les logiciels d'automatisation.
Pour générer les structures XML requises par Siemens TIA Portal :
Public Sub ExportSiemensXml()
Dim xmlDoc As Object
Dim root As Object, tagTable As Object, tagsNode As Object, tagNode As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
' Definition de la racine
Set root = xmlDoc.createElement("Document")
xmlDoc.appendChild root
Set tagTable = xmlDoc.createElement("PlcTagTable")
tagTable.setAttribute "Name", "Import_Excel_EVA"
root.appendChild tagTable
Set tagsNode = xmlDoc.createElement("Tags")
tagTable.appendChild tagsNode
' Exemple d'ajout d'une variable lue dans Excel (Ligne 2, Colonnes 1 a 3)
Set tagNode = xmlDoc.createElement("PlcTag")
tagNode.setAttribute "Name", Sheet1.Cells(2, 1).Value ; Symbole
Dim dataTypeNode As Object
Set dataTypeNode = xmlDoc.createElement("DataType")
dataTypeNode.Text = Sheet1.Cells(2, 2).Value ; REAL, BOOL, etc.
tagNode.appendChild dataTypeNode
Dim addrNode As Object
Set addrNode = xmlDoc.createElement("LogicalAddress")
addrNode.Text = Sheet1.Cells(2, 3).Value ; %I0.0, %MW10, etc.
tagNode.appendChild addrNode
tagsNode.appendChild tagNode
' Sauvegarde sur disque
xmlDoc.Save "C:\EVA\Exports\siemens_tags.xml"
End Sub
Cette macro parcourt les lignes d'Excel, nettoie les symboles pour être conformes aux contraintes syntaxiques d'automates, et génère un fichier d'import CSV valide pour Rockwell Automation.
Public Sub GenererCsvRockwell()
Dim FilePath As String
Dim FileNum As Integer
Dim Row As Long
Dim Symbole As String
Dim Adresse As String
Dim DataType As String
Dim Description As String
FilePath = "C:\EVA\Exports\rockwell_tags.csv"
FileNum = FreeFile
Open FilePath For Output As #FileNum
' En-tete de format requis par Studio 5000 Import
Print #FileNum, "0.1"
Print #FileNum, "TYPE", "SCOPE", "NAME", "DATATYPE", "DESCRIPTION", "SPECIFIER"
Row = 2 ' Demarrage a la ligne 2 (apres les en-tetes Excel)
While Sheet1.Cells(Row, 1).Value <> ""
Symbole = CleanPlcSymbol(Sheet1.Cells(Row, 1).Value)
DataType = Sheet1.Cells(Row, 2).Value
Adresse = Sheet1.Cells(Row, 3).Value
Description = Sheet1.Cells(Row, 4).Value
' Ecriture de la ligne CSV formatee (delimiteur virgule)
Print #FileNum, "TAG", "", Symbole, DataType, """" & Description & """", Adresse
Row = Row + 1
Wend
Close #FileNum
MsgBox "Export de " & (Row - 2) & " tags realise avec succes !", vbInformation
End Sub
Private Function CleanPlcSymbol(ByVal inputStr As String) As String
Dim cleanStr As String
Dim i As Integer
Dim c As String
' Remplacement des caracteres accentues
inputStr = LCase(inputStr)
inputStr = Replace(inputStr, "é", "e")
inputStr = Replace(inputStr, "è", "e")
inputStr = Replace(inputStr, "à", "a")
inputStr = Replace(inputStr, "ç", "c")
' Filtrage des caracteres non conformes
For i = 1 To Len(inputStr)
c = Mid(inputStr, i, 1)
If c Like "[a-z]" Or c Like "[0-9]" Or c = "_" Then
cleanStr = cleanStr & c
Else
cleanStr = cleanStr & "_"
End If
Next i
CleanPlcSymbol = UCase(cleanStr)
End Function
%MW10 et %MW11 sont deux entiers de 16 bits distincts, mais %MD10 qui prend 32 bits chevauche %MW10 et %MW11). L'agent doit implémenter des vérifications d'adresses pour interdire les superpositions mémoires involontaires.RESEAU_EAU et que l'unité est m3/h, le type de variable doit être un REAL ou INT pour représenter la mesure analogique, et non un BOOL).