Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Tipp: AddComponentsFromFiles schlägt fehl (VBA)

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Tipp: AddComponentsFromFiles schlägt fehl (VBA) (2736 mal gelesen)
geekv5
Mitglied
Konstrukteur


Sehen Sie sich das Profil von geekv5 an!   Senden Sie eine Private Message an geekv5  Schreiben Sie einen Gästebucheintrag für geekv5

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 07. Mrz. 2012 12:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

hatte das Problem, dass ich immer folgende Meldung angezeigt bekam:

Zitat:

Compile error:

Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic


Hier der nicht funktionierende Programmcode:

Code:

Dim productDocument1 As ProductDocument
Dim product1 As Product
Dim products1 As Products
Dim arrPartDocument(0) As Variant

Set productDocument1 = CATIA.ActiveDocument
Set product1 = productDocument1.Product
Set products1 = product1.Products
           
arrPartDocument(0) = "C:\Test\Test.CATPart"
products1.AddComponentsFromFiles arrPartDocument, "All"



Im Internet las ich den Tipp, die Reference "CATIA V5 CATAsssemblyInterfaceObject" zu setzen, was aber bereits der Fall war..

Die Lösung war einfach, folgende Zeile zu löschen oder auszukommentieren:

Code:

Dim products1 As Products

Darauf muss man erstmal kommen  Vielleicht kann ja noch ein Experte sagen, warum dass so ist..

Gruß und gutes Gelingen!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 08. Mrz. 2012 11:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für geekv5 10 Unities + Antwort hilfreich

Also hätte ich Dir auch sofort sagen können, wenn Du die Fehlermeldung eingestellt hättest. :-)
Habe ich hier auch schon oft genug beantwortet. :-)

Problem ist die COM-Schnittstelle im VBA-Bereich.

Du darfst, wenn Du Werte nach Außen übergibst, einfach nicht genau deklarieren, sondern musst auf LateBinding vertrauen. Das ist vor allem bei der Übergabe von Arrays so, ganz besonders, wenn sie Rückgabe sind.

Das sollte sich auch in jeder UserSelection, via Makro, wiederfinden. :-) Stichwort: SelectElement2

Was in dem Zusammenhang das Leben manchmal auch einfacher macht, ist ein CALL davor zu schreiben, wenn es nicht an dem Array liegt.

In Deinem Fall möchtest Du die Methode eines COM-Objekts benutzen und übergibst ein Array der Länge 1. COM weiß aber nicht genau wie lang das Array sein wird, denn es kann ja beliebig lang sein und daran stört es sich. Wenn auf der linken Seite das Objekt sowieso mit LateBinding arbeiten muss, dann geht's.

Ich empfehle die Schreibweise:
Dim product1 As Object 'Product

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz