drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 2008
-
31 mai 2006 à 16:45
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
6 juin 2006 à 11:29
Bonjour;
je suis en train de créer (ou d'essayer de créer) une macro afin de récupérer des informations depuis un logiciel de CAO (TopSolid) pour les envoyer vers Excel.
Dans ce cas je veux récupérer la chaine de caractère d'un texte (label de cotation) que je retrouve dans le dessin grace au nom de cet élément. J'obtient alors toutes les informations sur l'éléments : hauteur du texte, nom, désignation... Mais quand je veux obtenir la string (valeur du texte) j'ai l'erreur suivante: "L'accès à cette emplacement de mémoire n'est pas valide (Exception from HRESULT: 0x800703E6)" et du coup ma variable cc=nothing.
si quelqu'un pouvait éclairer ma lanterne ce serai super sympa. Merci
dim doc AsTopSolid.Document
Dim cc AsString
Dim tt As TopSolid.IText
EltNam = Doc.Elements.Item(i).Name
If EltNam =
"totonom"
Then
tt = Doc.Elements.Item(i)
cc = tt.String
Doc.Elements.Item(i).String =
"lateteatoto"
'change le texte
r = MsgBox(cc, MsgBoxStyle.OkOnly)
End
If
Drikce 06
A voir également:
L'acces a cet emplacement de memoire n'est pas valide
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 31 mai 2006 à 20:50
Je dirais à priori 2 solutions :
soit tu vire la variable tt qui sert pas à grand chose, et tu fais directement cc = Doc.Elements.Item(i).String
soit tu conserve la variable tt, mais il faut l'initialiser. Dans ton cas elle ne l'est pas. La variable tt telle que déclarée répresente un objet (ou une référence à l'objet). Mais cet objet n'est pas créer en mémoire.
Pour cela il faut utiliser l'instruction Set.
Comme toi tu veux une référence sur un objet déjà existant, il n'est pas necessaire de creer un nouvel objet, il suffit juste d'associer la référence à l'objet existant. Il faut donc que tu fasse Set tt = Doc.Elements.Items(i).
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 1 juin 2006 à 08:58
Bonjour
En .NET, pas besoin de SET.
tt = Doc.Elements.Items(i)
c'est mieux.
Doc, tu l'initalise où .?
Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 6 juin 2006 à 08:41
Bonjour, merci pour vos réponses et excuser moi du temps de réaction mais je n'était pas la.
Voici la procédure complète pour que vous ayez toutes les informations. L'application reconnait bien la variable tt comme un objet TopSolid mais a la fin quand je demande les valeurs des variables bb et cc (hauteur de texte et texte) dans la msgbox j'ai bien la hauteur du texte (bb) mais le texte (cc) est égale à nothing et quand on regarde l'objet tt dans le détails dans la partie string on retrouve le problème du à la mémoire.