VBA und iLogic sind recht ähnlich und können recht einfach vom einem zum anderen geändert werden.
Aus Public Sub <Name> machen wir Sub Main
Wenn wir einen VBA-Code in den iLogic-Editor kopieren und ausführen, kommt diese Meldung:
Das Hauptprogramm muss Sub Main heißen. Ich muss also in meinem Beispiel Public Sub BOMExport() in Sub Main ändern. Evtl. vorhandene Untersubs und Funktionen kommen danach.
Let / Set muss weg
iLogic benötigt mein Let und Set. Weg bekommen wir das einfach mittels Suchen/Ersetzen. Einfach alle Set durch einen Leerstring ersetzen.
Argumente müssen in Klammern stehen
Im Beispiel unten bedeutet das, das aus Mkdir Path werden muss: mkdir (path)
Das Beispiel 3 (Stückliste exportieren) als VBA-Code hier mal umgewandelt in iLogic-Code. Es geht wirklich relativ schnell, wenn man sich die Fehlermeldungen anschaut und die drei Dinge korrigiert, die ich beschrieben habe.
iLogic-Beispielcode Export Stückliste der IAM
Sub Main 'Var. für den Exportpfad definieren Dim Path As String Path = Environ("TEMP") 'Baugruppeobjekt Dim oDoc As AssemblyDocument oDoc = ThisApplication.ActiveEditDocument 'Displayname abzüglih letzte 4 Stellen (i.d.R. .iam) auslesen Dim AsmName As String AsmName = Left(oDoc.DisplayName, Len(oDoc.DisplayName) - 4) 'Zusammensetzden des Pfades & Dateiname aus den beiden Variablen Dim Filename As String Filename = Path & "\" & AsmName 'Bauerntrick: Bei Fehler mit dem nächsten Schritt weitermachen 'd.h. wenn Mkdir einen Fehler verursacht (weil das Verzeichnis schon existiert) 'geht es einfach weiter. So spart man sich die Prüfung ob das Verz. existiert vor der Erstellung On Error Resume Next MkDir (Path) 'On Error Resume Mext wieder auschalten On Error Goto 0 'Vereis auf das Stücklistenobjekt in der Baugruppe Dim oBOM As BOM oBOM = oDoc.ComponentDefinition.BOM ' In der Stcklilstenansicht Strukturiert auf Alle Ebenen umschalten oBOM.StructuredViewFirstLevelOnly = False ' Strukturierte Ansicht aktivieren sonst kann sie nicht exportiert werden oBOM.StructuredViewEnabled = True 'Stücklistenansichtobjekt erstellen und auf das Item Namens "Struktiriert" setzen Dim oStructuredBOMView As BOMView oStructuredBOMView = oBOM.BOMViews.Item("Strukturiert") 'Export der Stücklistenansicht unter dem Filename plus Zusatz Stückluste Strukturiert oStructuredBOMView.Export (Filename & " Stückliste Strukturiert.xls", kMicrosoftExcelFormat) 'Ansicht nur Bauteile aktivieren oBOM.PartsOnlyViewEnabled = True 'Verweis auf das Objekt BOMView "nur Bauteile" Dim oPartsOnlyBOMView As BOMView oPartsOnlyBOMView = oBOM.BOMViews.Item("nur Bauteile") 'Export der Stücklistenansicht unter dem Filename plus Zusatz Stückluste Strukturiert oPartsOnlyBOMView.Export (Filename & " Stückliste Nur Bauteile.xls", kMicrosoftExcelFormat) End Sub
iLogic kann übrigens (da sehr verwandt zu vb.net) auch Try...Catch. Siehe dazu auch diesen Beitrag.
und wie gehts umgekehrt??
AntwortenLöschenWenn du Befehle nutzt, die VBA kennt, dann machst du das Gegenteil von dem, was oben steht.
AntwortenLöschenilogic- und vb.net spezifische Befehle kannst du nicht ohne weiteres einfach in VBA überführen.