Ich habe ein kleines Makro in der Solidworks-API, um die Stückliste einer geöffneten Zeichnung nach Excel in zu exportieren. CSV-Datei
Was ich möchte, ist, dass diese Excel-Datei einen festen Namen hat und jedes Mal, wenn ich mein Makro ausführe, die exportierte Stücklistentabelle aus Solidworks direkt unter der anderen geschrieben wird. Ich weiß nicht genug über den Code, den ich erhalten habe, was er derzeit tut, ist ein einzelnes Array zu erstellen. Ich kann die Anweisung "schreibe nur ab dem Moment, in dem es leer ist" nicht einbauen, nur um meine Nomenklaturen zu haben, die aufeinander folgen, während ich das Makro auf meinen verschiedenen Ebenen ausführe.
Wenn jemand eine Codezeile hat, die mir helfen würde, bin ich dafür!!
Wenn wir beispielsweise in einer CSV-Datei das Semikolon als Trennzeichen verwenden und die Buchstaben A, B und die Variable C in die erste Zeile und die Buchstaben D, F und die Variable F in die erste Zeile schreiben möchten, sollten wir schreiben:
f = Freie Datei Öffnen Sie "C:\TEST.csv" zum Anfügen als #f Drucken Sie #f, "A; B; " & C Drucken Sie #f, "E; F; " & G
Schließen #f
Mit einem konkreten Beispiel (aus der Implementierung von Anhängen in unserem ERP):
f = Freie Datei
Öffnen Sie "\\dimecox3\PLANBE$\Import_plans.csv" zum Anhängen als #f Öffnen einer CSV- oder TXT-Datei Schreiben in die Eigenschaftendatei Print #f, "ITM; 2; " & CODE & ";; 001; " & docNamePDF & "; " & "PDF" Print #f, "ITM; 2; " & CODE & ";; 002; " & docNameDWG & "; " & "DWG" Schließen #f
Au! Ich habe nicht das Gefühl, dass es die Lösung für mein Problem ist, ich bin ein wenig verloren... Haben Sie den Code als Anhang geöffnet, um das Ergebnis zu sehen (Sie benötigen eine Zeichnung mit einer Stückliste , damit es funktioniert).
Makro funktioniert sehr gut! aber ich möchte nur, dass bei jedem RUN des Makros die in SOLIDWORKS aktive Nomenklatur in derselben CSV-Datei beginnt, aber darunter erscheint, was möglicherweise geschrieben wurde. Auf diese Weise würde ich, indem ich meine Pläne durchgehe und das Makro ausführe, am Ende ein Excel erhalten, das alle meine Teile globalisiert.
Ganz klar, ich bin schlecht, ich fange gerade erst an! Ich bin Cartoonist und entdecke die Leistungsfähigkeit dieser APIs:)
Sub ProcessBomFeature(swBomFeat As SldWorks.BomFeature)
Dim vTableArr als Variante Dim vTable als Variante Dim swTable als SldWorks.TableAnnotation Dim swAnn As SldWorks.Annotation Dim nNumCol so lange Dim nNumRow As Long Dim sRowStr As String Sonne i So lang Sonne j So lang
'Abrufen von Anmerkungstabellen vTableArr = swBomFeat.GetTableAnnotations
'Durchlaufen von Anmerkungstabellen Für jeden vTable in vTableArr
"Abrufen eines Tisches Legen Sie swTable = vTable fest
"Wiederherstellung von Inhalten Set swAnn = swTable.GetAnnotation
"Anzahl der Spalten und Zeilen nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount
"Name und Typ der Tabelle Debug.Print " Table : " & swAnn.GetName & " Type : " & swTable.Type
"Verlauf der Strecken Für i = 0 bis nNumRow - 1
sRowStr = " "
"Route der Kolonne Für j = 0 bis nNumCol - 1
sRowStr = sRowStr & swTable.Text(i, j) & " | "
Weiter j
' Anzeigen von Inhalten Debug.Print Links(sRowStr, Len(sRowStr) - 1)
Weiter i
'Ordner verlassen Dim xlsPath als Zeichenfolge xlsPath = Mitte(swModel.GetPathName, 1, InStrRev(swModel.GetPathName, "\"))
"Name des XLS Dim xlsName als Zeichenfolge Wenn InStrRev(swModel.GetTitle, ".") > 0, dann xlsName = Mid(swModel.GetTitle, 1, InStrRev(swModel.GetTitle, ".") - 1) & ".csv" Oder xlsName = swModel.GetTitle & ".csv" Ende, wenn
Das habe ich mir also gedacht: Die verwendete SaveAsText-Funktion erlaubt es Ihnen nicht, Zeilen hinzuzufügen, wenn die Datei bereits existiert, wird sie überschrieben:
Wenn eine Datei mit dem angegebenen Namen im angegebenen Pfad... Existiert
Mit Vergnügen. Wenn Sie Ihr Makro mit dem Code veröffentlichen können, der für Personen geändert wurde, die das gleiche Problem haben, und in einer Textdatei, umso besser!