Bonjour,
Je réalise des scripts VBA sous CATIA V5. Dans le fond, c'est presque identique à Office...
J'ai développé une fonction qui importe les codes des modules, formulaires et classes afin de pouvoir continuer à éditer du code lorsque CATIA est occupé (chargement de fichier,...). Tout fonctionne bien, mais je dois souvent exécuter l'import 2 fois, car lors de la première fois le script plante lorsque qu'il y a encore des données chargées (formulaire notamment). Est-ce possible de procéder à un cleanup de ce qui est encore actif au début du script ?
PS : je passe par la librairie Microsof APC xxx Object Library car Microsoft Visual Basic for Applications Extensibility 5.3 ne me semble pas totalement compatible avec CATIA (probablement une restriction au niveau de la sécurité)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 Attribute VB_Name = "RESERVED_CATIA" Option Private Module Option Explicit Private Const PATH_SCRIPT_SOURCE As String = "..." ' Public Sub import() '############################################################################# '# cleans VBA up before source code imports ################################################# 'closes all forms Dim frm As MSForms.UserForm: For Each frm In VBA.UserForms Unload Object:=frm 'doesn't seem to work Set frm = Nothing'doesn't seem to work Next frm '############################################################################## Dim files As New Collection With New Scripting.FileSystemObject 'loops through all file saved from CATIA Dim file As Scripting.file: For Each file In .GetFolder(folderPath:=PATH_SCRIPT_SOURCE).files If file.name Like "RESERVED*" Then GoTo skip_file With New VBScript_RegExp_55.RegExp .ignoreCase = True .pattern = "\.(bas|cls|frm)$" If .test(sourceString:=file.name) Then files.add item:=file End With skip_file: Next file End With With New MSAPC.Apc With .projects(index:=1).VBProject 'removes all files Dim component As VBIDE.VBComponent: For Each component In .VBComponents 'skips active module If Not component.name Like "RESERVED*" Then .VBComponents.remove VBComponent:=component Next component 'imports files For Each file In files 'skips active module If Not file.name Like "RESERVED*" Then .VBComponents.import fileName:=file.path Next file 'update codes in order to ensure compatibility between CATIA and Excel For Each component In .VBComponents 'skips code If component.name Like "RESERVED*" _ Or component.name = "..." Then GoTo skip_component skip_component: Next component End With End With Debug.Print "Source files were imported from " & PATH_SCRIPT_SOURCE & ".." End Sub
Merci par avance !
Partager