VBA : Propriétés perso générale et non de la configuration

Bonjour à tous,

Je ne maitrise pas très bien le VBA et je bidouille un peu...

Du coup j'ai créer cette macro (en la copiant et en ajoutant mes propriétés) mais j'aimerais que les propriétés créées se mettent dans l'onglet "Personnaliser" et non dans "Spécifiques à la configuration". Pourriez-vous me corriger ma macro svp? Merci d'avance.

Dim swApp As Object
Dim swModel As ModelDoc2
Dim config As SldWorks.Configuration
Dim swCustProp As CustomPropertyManager
Dim lRetVal As Long
Dim maValeur0 As String
Dim maValeur1 As String
Dim maValeur2 As String
Dim maValeur3 As String
Dim maValeur4 As String

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    maValeur0 = swModel.GetTitle 'On récupère le nom du fichier
    maValeur1 = Left(maValeur0, 16) 'On récupère le numéro de pièce, donc 16 premiers caractères du nom du fichier
    maValeur2 = Left(maValeur0, 22) 'On récupère les 22 premiers caractères du nom du fichier
    maValeur3 = Right(maValeur0, Len(maValeur0) - Len(maValeur2)) 'On récupère la Designation derniers caractères du nom du fichier - les 22 premiers
    maValeur4 = Left(maValeur0, 13) 'On récupère le numéro de moule
    Set config = swModel.GetActiveConfiguration
    Set cusPropMgr = config.CustomPropertyManager
    lRetVal = cusPropMgr.Add3("NumeroDePiece", swCustomInfoType_e.swCustomInfoText, maValeur1, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
    lRetVal = cusPropMgr.Add3("Designation", swCustomInfoType_e.swCustomInfoText, maValeur3, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
    lRetVal = cusPropMgr.Add3("DocumentSource", swCustomInfoType_e.swCustomInfoText, maValeur4, swCustomPropertyAddOption_e.swCustomPropertyDeleteAndAdd)
End Sub

 

Si vous avez un bon tuto à me conseiller pour le VBA Solidworks je suis preneur.

Bonjour;

Pour que vos propriété soient dans l'onglet "Personnalisé' (et non dans "Configuration":
Remplacez votre ligne :
Set cusPropMgr = config.CustomPropertyManager
par
Set cusPropMgr =swModel.Extension.CustomPropertyManager("")

Pour un tuto : voir ici (en anglais mais bien expliqué)
https://blog.codestack.net/custom-properties-automation
Ou si vous débutez vraiment:
https://thecadcoder.com/Solidworks-macro-guide/
sans oublier la touche "F1" dans l'editeur VB
Ni l'aide API de Solidworks


Nota : votre code n'est pas très long, mais à l'avenir il serait préférable d'utiliser l'éditeur de Code


(en mode VBscript pour les macro VB ... pour Visual Basic-)

cordialement

3 « J'aime »

Bonjour

et plus généralement, préférer vbNullString plutôt que "". Plus rapide à exécuter et plus léger en mémoire.

Bonjour @guillaume.bruere 

La réponse à votre question qui mérite d'être marquée comme solution est le message de @Maclane , pas le mien ! Merci de rectifier pour lui.

Cordialement

1 « J'aime »

Bonjour @Sylk, oui j'ai voulu approuvé les 2 réponses mais une seule est prise en compte. Merci à tous.

1 « J'aime »

Bonjour;

Merci Sylk mais comme je ne connaissais pas l'utilisation de "vbNullString", je veux bien te rétro-ceder 1/2 point... ;)
Cordialement.

2 « J'aime »