Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice A.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice A"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice B.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice B"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice C.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice C"
swModel.WindowRedraw
End Sub
oder:
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Dim NoteNames As Variant
Dim NoteFolder As String
Dim i As Integer
NoteNames = Array("Indice A", "Indice B", "Indice C")
NoteFolder = "C:\monDossierDeNotes\"
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
For i = 0 To 2
Set swAnn = swModel.Extension.InsertAnnotationFavorite(NoteFolder & NoteNames(i) & ".sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = NoteNames(i)
Next
swModel.WindowRedraw
End Sub
swModel ist nicht als globale Variable deklariert. Obwohl es also in Layer() zugewiesen ist, saugt es ChgtComboBox1() ein Wir müssen hinzufügen: Dim swModel als sldworks.modeldoc2 vor main()
Tatsächlich gibt es eine Menge nicht deklarierter Variablen. Mein Vorschlag, fügt hinzu: Explizite Option ganz am Anfang des Makros und korrigiert alle Reporting-Fehler.
Deklarieren Sie auch Layer() mit: Sub Layer(void) und ruft es auf mit: Call Layer(Empty) oder: Layer Empty Gleiches gilt für ChgtComboBox1() Es wird gezwungen, das Makro von main() zu starten.
Es ist wichtig, dass ein Makro nur eine Hauptfunktion ist (normalerweise main()).
Eine Funktion ist sekundär, wenn sie einen Parameter wie (ByVal swModel As ModelDoc2) hat. Wenn eine Funktion sekundär ist, aber keinen Parameter benötigt, besteht die Konvention darin, ihr einen leeren Parameter zuzuweisen. (Ungültig)