J'ai une petite macro sur l'API de Solidworks d'exporter la nomenclature d'une mise en plan ouverte sur Excel en .CSV
Ce que je voudrais est que ce fichier Excel ai un nom fixe et qu'a chaque fois que j'execute ma macro, la table de nomenclature exporté de Solidworks viennent s'ecrire juste en dessous de l'autre. Je maitrise pas assez le code qu'on m'a donné, ce qu'il fait actuellement est de créer un seul tableau.. je n'arrive pas à incorporer l'instruction "n'ecrire qu'a partir du moment ou c'est vide", histoire d'avoir mes nomenclatures qui s'enchainent au fur et à mesure que j'execute la macro sur mes differents plans.
Si quelqu'un à une ligne de code qui m'aiderait, je suis preneur!!!
Par exemple, si dans un fichier CSV, on utilise le point virgule comme séparateur et qu'on veut écrire les lettres A, B et la variable C sur la première ligne et les lettres D, F et la variable F sur la première ligne , il faut écrire :
f = FreeFile Open "C:\TEST.csv" For Append As #f Print #f, "A;B;" & C Print #f, "E;F;" & G
Close #f
Avec un exemple concret (issu de l'implémentation des pièces jointes dans notre ERP) :
f = FreeFile
Open "\\dimecox3\PLANBE$\Import_plans.csv" For Append As #f 'ouverture du fichier CSV ou TXT 'écriture dans le fichier des propriétés Print #f, "ITM;2;" & CODE & ";;001;" & docNamePDF & ";" & "PDF" Print #f, "ITM;2;" & CODE & ";;002;" & docNameDWG & ";" & "DWG" Close #f
Outch! j'ai pas l'impression que ce soit la solution à mon soucis, je suis un peux perdu... Avez vous ouvert le code en piece jointe pour en voir le résultat (il faut une mise en plan avec une nomenclature pour que ça marche).
La macro marche tres bien! mais je souhaite juste que à chaque RUN de la macro, la nomenclature active sous solidworks parte sur le meme fichier csv, mais en dessous de ce qui à pu s'ecrire apparavent. De cette maniere, en parcourant mes plans et executant la macro, j'aurais au final un excel qui globalise toutes mes pièces.
Clairement, je suis mauvais, je débute! je suis dessinateur, et je decouvre la puissance des ces API :)
Sub ProcessBomFeature(swBomFeat As SldWorks.BomFeature)
Dim vTableArr As Variant Dim vTable As Variant Dim swTable As SldWorks.TableAnnotation Dim swAnn As SldWorks.Annotation Dim nNumCol As Long Dim nNumRow As Long Dim sRowStr As String Dim i As Long Dim j As Long
'Récupération des tables d'annotation vTableArr = swBomFeat.GetTableAnnotations
'Parcours des tables d'annotation For Each vTable In vTableArr
'Récupération d'une table Set swTable = vTable
'Récupération des contenus Set swAnn = swTable.GetAnnotation
'Nombre de colonne et de ligne nNumCol = swTable.ColumnCount nNumRow = swTable.RowCount
'Nom et type de table Debug.Print " Table : " & swAnn.GetName & " Type : " & swTable.Type
'Parcours des lignes For i = 0 To nNumRow - 1
sRowStr = " "
'Parcours des colonnes For j = 0 To nNumCol - 1
sRowStr = sRowStr & swTable.Text(i, j) & " | "
Next j
' Affichage du contenu Debug.Print Left(sRowStr, Len(sRowStr) - 1)
Next i
'Dossier de sortie Dim xlsPath As String xlsPath = Mid(swModel.GetPathName, 1, InStrRev(swModel.GetPathName, "\"))
'Nom du XLS Dim xlsName As String If InStrRev(swModel.GetTitle, ".") > 0 Then xlsName = Mid(swModel.GetTitle, 1, InStrRev(swModel.GetTitle, ".") - 1) & ".csv" Else xlsName = swModel.GetTitle & ".csv" End If
Avec plaisir. Si tu peux poster ta macro avec le code modifié pour les personnes qui auront le même problème, et dans un fichier texte, c'est encore mieux !