Ik heb een kleine macro op de Solidworks API om de stuklijst van een open tekening te exporteren naar Excel in . CSV-bestand
Wat ik graag zou willen, is dat dit Excel-bestand een vaste naam heeft en elke keer dat ik mijn macro uitvoer, komt de geëxporteerde BOM-tabel van Solidworks net onder de andere te schrijven. Ik weet niet genoeg over de code die ik heb gekregen, wat het momenteel doet is het maken van een enkele array. Ik kan de instructie "schrijf pas vanaf het moment dat het leeg is" niet opnemen, alleen maar om mijn nomenclaturen die elkaar opvolgen terwijl ik de macro op mijn verschillende vlakken uitvoer.
Als iemand een regel code heeft die me zou helpen, ben ik er helemaal voor!
Als we bijvoorbeeld in een CSV-bestand de puntkomma als scheidingsteken gebruiken en we willen de letters A, B en de variabele C op de eerste regel schrijven en de letters D, F en de variabele F op de eerste regel , moeten we schrijven:
f = VrijBestand Open "C:\TEST.csv" om toe te voegen als #f Print #f, "A; B; " & C Print #f, "E; F; " & G
Sluit #f
Met een concreet voorbeeld (uit de implementatie van bijlagen in ons ERP):
f = VrijBestand
Open "\\dimecox3\PLANBE$\Import_plans.csv" voor Toevoegen als #f het openen van een CSV- of TXT-bestand Schrijven naar het eigenschappenbestand Gedrukt #f, "ITG; 2; " & CODE & ";; 001; " & docNamePDF & "; " & "PDF" Gedrukt #f, "ITG; 2; " & CODE & ";; 002; " & docNameDWG & "; " & "DWG" Sluit #f
Au! Ik heb niet het gevoel dat het de oplossing voor mijn probleem is, ik ben een beetje verdwaald... Heb je de code als bijlage geopend om het resultaat te zien (je hebt een tekening met een stuklijst nodig om het te laten werken).
Macro werkt heel goed! maar ik wil gewoon dat bij elke RUN van de macro, de nomenclatuur die actief is in solidworks begint op hetzelfde csv-bestand, maar hieronder verschijnt wat er mogelijk is geschreven. Op deze manier zou ik, door mijn plannen door te nemen en de macro uit te voeren, eindigen met een excel die al mijn onderdelen globaliseert.
Het is duidelijk dat ik slecht ben, ik ben net begonnen! Ik ben een cartoonist, en ik ontdek de kracht van deze API's:)
Sub ProcesBomFeature(swBomFeat als SldWorks.BomFeature)
Dim vTableArr als variant Dim vTable als variant Dim swTable als SldWorks.TableAnnotation Dim swAnn As SldWorks.Annotatie Dim nNumCol zo lang Dim nNumRow zo lang Dim sRowStr als snaar Zon i Zo lang Zon j Zo lang
'Annotatietabellen doorkruisen Voor elke vTable in vTableArr
'Een tafel ophalen Stel swTable in = vTable
'Herstel van inhoud Stel swAnn = swTable.GetAnnotation in
"Aantal kolommen en rijen nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount
"Naam en type van de tabel Debug.Print " Tabel : " & swAnn.GetName & " Type : " & swTable.Type
"Traject van de lijnen Voor i = 0 Naar nNumRow - 1
sRowStr = " "
'Kolom route Voor j = 0 Naar nNumCol - 1
sRowStr = sRowStr & swTable.Text(i, j) & " | "
Volgende j
' Inhoud weergeven Debug.Print Links (sRowStr, Lin (sRowStr) - 1)
volgende i
'Map afsluiten Dim xlsPath als snaar xlsPath = Mid(swModel.GetPathName, 1, InStrRev(swModel.GetPathName, "\"))
"Naam van de XLS Dim xlsName Als String Als InStrRev(swModel.GetTitle, ".") > 0 Dan xlsName = Mid(swModel.GetTitle, 1, InStrRev(swModel.GetTitle, ".") - 1) & ".csv" Anders xlsName = swModel.GetTitle & ".csv" Einde als