Vermutlich sind in den nicht funktionierenden Makros Verweise auf Libraries anderer SWx-Versionen.
Ich versuch mal vorsichtig, den Unterschied zwischen Early Binding und Late Binding zu erklären (bin selbst nur Programmier-Hinkefuß):
Beim Early Binding (liegt bei Euch vermutlich vor) werden zu Beginn Verweise auf die Libraries von SWx gemacht. Dadurch kann das Makro alle SWx-Objekte und Konstanten nach Bedarf holen, beim Programmieren ist das angenehmer, weil der Editor gleich beim Schreiben Befehlsoptionen vorschlägt, bzw. anzeigt.
Der Code beim Early binding sieht dann z.B. so aus:
Dim swApp As SldWorks.SldWorks 'für early Binding
Dim myModel As SldWorks.ModelDoc2
Dim swDocExt As SldWorks.ModelDocExtension
Dim swMass As SldWorks.MassProperty
Beim Late Binding gibt es keinen Verweis auf die Libraries. Alle benötigten Konstanten muss man im Programmcode daher deklarieren, dafür läuft das Makro dann auch versionsunabhängig.
Der o.a. Code würde dann so aussehen:
'Public Enum DocumentTypes_e
Public Const swDocNONE = 0
Public Const swDocPART = 1
Public Const swDocASSEMBLY = 2
Public Const swDocDRAWING = 3
Public Const swDocSDM = 4
Public swApp As Object
Public swDocExt As Object
Public swMass As Object
Public myModel As Object
Die Konstanten findest du in der swconst.bas, Stefan Berlitz hat die gerade für SWx2007 zur Verfügung gestellt:
http://solidworks.cad.de/mm_995.htm
Die Hauptarbeit für euch besteht also darin, die benötigten Konstanten rauszufinden. Das geht ganz gut mit Kompilieren/Debuggen, die API-Onlinehilfe zum betreffenden Befehl/Objekt zu Rate ziehen ganz gut.
Piet
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP