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
lub:
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 nie jest zadeklarowany jako zmienna globalna. więc pomimo tego, że jest przypisany w Layer(), jest do bani w ChgtComboBox1() musimy dodać: Dim swModel jako sldworks.modeldoc2 przed main()
W rzeczywistości istnieje wiele niezadeklarowanych zmiennych. Moja sugestia, dodaje: Opcja jawna na samym początku makra i koryguje ewentualne błędy w raportowaniu.
Zadeklaruj również Layer() za pomocą: Sub Layer(void) i wywołuje go za pomocą: Call Layer(Empty) lub: Layer Empty To samo dotyczy ChgtComboBox1() Wymusi to uruchomienie makra z main()
Ważne jest, aby makro było tylko jedną główną funkcją (zwykle main()).
Funkcja jest drugorzędna, jeśli ma parametr taki jak (ByVal swModel As ModelDoc2). Jeśli funkcja jest pomocnicza , ale nie potrzebuje parametru, konwencją jest przypisanie jej pustego parametru. (Nieważny)