Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Aus Excel mit VBA eine Stückliste erstellen

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:  Aus Excel mit VBA eine Stückliste erstellen (6383 mal gelesen)
catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 21. Mai. 2010 20:33    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

Hallo zusammen,

bin auf der Suche nach einem VBA-Skript, welches mir erlaubt aus Excel heraus die Stückliste eines geöffneten Catia-product in Excel einzulesen. Später soll dann diese Stückliste noch erweitert werden, wie z.B. mit Gewicht, Volumen oder Material der Teile. Da ich noch neu im Umgang mit Catia bin, wäre ich über jede Hilfe sehr dankbar.

viele Grüße,
catiavba

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 22. Mai. 2010 09:47    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 catiavba 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum
Du könntest die Funktion ExractBOM verwenden und eine Stückliste zu Exportieren (siehe hier und V5Automation.chm) und diese dann ggf in Excel einzulesen/nachbearbeiten.

Gruß
Bernd

PS: Bitte Systeminfo ausfüllen.

------------------
Warum einfach, wenn es auch kompliziert geht.

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 22. Mai. 2010 10:50    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

Danke für die schnelle Antwort. Die Systeminfo habe ich gleich eingestellt 
Dann werde ich mich mal einlesen...

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 11:49    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

Habe es nun getestet. Sieht ganz gut aus, die Textdatei wird erstellt. So wie ich das bisher sehe kann ich jedoch mit der Funktion nur eine Datei erstellen und diese anschließend wieder in Excel einlesen. Gibt es keine Möglichkeit, mit der ich auf die BOM wie auf ein Array zugreifen kann?

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Mai. 2010 12:18    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 catiavba 10 Unities + Antwort hilfreich

Servus
Alternativ kannst du das Product per Script durchsuchen und die gewünschten Parameter direkt in eine Array schreiben (siehe V5Automation.chm)
Oder kann man mit der "ExractBOM" auch direkt ein Excel-File ausgeben?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 12:32    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

Habe es jetzt auch mal per Skript gelöst. Hier mal ein Excel-VBA Beispiel, welches die Namen der Teile die sich im aktiven Dokument befinden in eine Tabelle schreibt:

Set CATIA = GetObject(, "CATIA.APPLICATION")
Set activedoc = CATIA.ActiveDocument.Product

AnzahlProducts = activedoc.Products.Count
i = 1

For Y = 1 To AnzahlProducts
tabelle1.Cells(Y, 1).Value = activedoc.Products.Item(i).Name
i = i + 1
Next Y

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 12:56    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

Eine Frage doch noch: Das Produkt besteht je meist aus mehreren Baugruppen. Diese haben wieder weitere Unterbaugruppen etc.... Um die BOM nachzubauen, muss das Skript bei jedem Item wieder in die Products-Hierarchie abtauchen und nach weiteren Items suchen und dann in der BOM die Menge erhöhen. Gibt es da eventuell schon etwas fertiges? Falls nicht werde ich das Skript weiter ausbauen müssen...

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Mai. 2010 13:17    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 catiavba 10 Unities + Antwort hilfreich

Servus
Such mal nach den Begriffen "Rekursion" und "rekursiv". Da gibt es schon genügend Scripte.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 29. Mai. 2010 editiert.]

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 13:44    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

Auf dem Weg bin ich schon. Habe folgendes Skript in dem Buch "Catia V5 - Makroprogrammierung mit VB" gefunden und die erste sub (wohl falsch) angepasst:


------------------------------------
Sub CATmain()
    Set CATIA = GetObject(, "CATIA.APPLICATION")
    Set activedoc = CATIA.ActiveDocument.Product
    Analysieren (activedoc)
       
End Sub

Public Function Analysieren(P As Product)
   
    'Name ausgeben
    MsgBox (P.PartNumber)
   
    'Liste analysieren
    Dim PP As Products
    Dim I As Integer
    Set PP = P.Products
    I = 0
   
    Do While I < PP.Count
       
        I = I + 1
        Analysieren (PP.Item(I))
    Loop
           
End Function


------------------------------

Leider kommt immer die Meldung: "Objekt unterstützt diese Eigenschaft oder Methode nicht" (4. Zeile)
Kann jemand etwas damit anfangen?

Was ich immer noch nicht ganz verstehe, ist der Unterschied zwischen Excel-VBA und Catia-VBA.
Im Kochbuch steht der Unterschied zu Excel-VBA sei, dass bei Excel-VBA:

1. Die Prozedur  mit Sub A_GetV5Parameter() (und nicht mit Sub CatMain()) beginnt
--> aber es ist doch egal wie ich meine Sub nenne, oder nicht?

2. V5 muss explizit als Objekt definiert werden: Set CATIA = GetObject(, "CATIA.APPLICATION")

...der Rest des Codes sei absolut gleich (...dennoch kommt die Fehlermeldung)

PS: Das was ich Suche, habe ich eben für Solidworks gefunden, leider noch nicht für CATIA: http://ww3.cad.de/foren/ubb/Forum2/HTML/002304.shtml


[Diese Nachricht wurde von catiavba am 29. Mai. 2010 editiert.]

[Diese Nachricht wurde von catiavba am 29. Mai. 2010 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Mai. 2010 17:04    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 catiavba 10 Unities + Antwort hilfreich

Servus
Was ist bei dir die 4. Zeile?
Gibt dir das "Watchfenster" eine Hinweis auf das Problem?
Was machst du wenn ein Part in der Baugruppe eingebaut ist? Dann funktioniert PP.Products nicht.
Such dir mal eine Vorlage-Script hier im Forum für Rekursion (zB hier oder hier)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 17:28    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

Der Einzige Hinweis den ich finden konnte ist die Fehlermeldung.

Mit Zeile 4 beziehe ich mich auf den Aufruf der 2. Sub: "Analysieren (activedoc)"

Danke für die Unterstützung.

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 17:37    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

So aber jetzt geht es. Man muss "call" vor den Aufruf der sub setzten. Das Skript aus dem Buch taugt jedoch wirklich nichts. Werde mir mal die 2 genannten Links ansehen.

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

catiavba
Mitglied


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

Beiträge: 9
Registriert: 21.05.2010

Catia V5R19 SP2
Windows XP Pro SP3
P4 2,8 Ghz, 2GB RAM

erstellt am: 29. Mai. 2010 19:07    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

Habe den Code jetzt fertig. Danke bgrittmann  .  Falls es jemanden interessiert, hier der fertige Code:

Dim y As Integer 'Zeilenzähler
Dim xMenge      'Salte Menge
Dim xName        'SPalte Name
Dim xPartNumber  'Spalte PartNumber


Sub CATMain()
   
    y = 1
    xMenge = 1
    xName = 2
    xPartNumber = 3
   
    Set CATIA = GetObject(, "CATIA.APPLICATION")
    Set oRoot = CATIA.ActiveDocument
    Set oProducts = oRoot.Product.Products
   
    Call SUB_ProdScan(oProducts)
   
End Sub

Sub SUB_ProdScan(oProducts)

ySuche = 1

    For I = 1 To oProducts.Count                              'Über alle Teile der aktuellen Hirarchie
        If oProducts.Item(I).Products.Count > 0 Then          'Enthält Teil Kinder?
            Set oProductsUebergabe = oProducts.Item(I).Products
            Call SUB_ProdScan(oProductsUebergabe)              'Rekursiver Aufruf mit Übergabe der Kinder
        Else                                                  'keine Kinder
            schonDrinn = False  'Schalter zurücksetzten
            ySuche = 1          'Suchzeile an den Anfang
         
            'Schauen ob schon drinn, wenn ja Menge erhöhen
            Do While tabelle1.Cells(ySuche, xPartNumber) <> ""
                If tabelle1.Cells(ySuche, xPartNumber) = oProducts.Item(I).PartNumber Then
                      tabelle1.Cells(ySuche, xMenge).Value = tabelle1.Cells(ySuche, xMenge).Value + 1
                      schonDrinn = True
                      y = y - 1
                      Exit Do
                End If
                ySuche = ySuche + 1
            Loop
                     
            'Wenn nich nicht drinn in nächste freie Zeile schreiben
            If schonDrinn = False Then
                tabelle1.Cells(y, xMenge).Value = 1
                tabelle1.Cells(y, xName).Value = oProducts.Item(I).Name
                tabelle1.Cells(y, xPartNumber).Value = oProducts.Item(I).PartNumber
            End If
       
            y = y + 1
   
        End If
    Next
End Sub

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

leon0109
Mitglied



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

Beiträge: 21
Registriert: 20.08.2011

CATIA V5 R19 SP3
Win 7 Pro 64

erstellt am: 13. Dez. 2011 15: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 catiavba 10 Unities + Antwort hilfreich

Hallo catiavba

Dein Beitrag ist etwas älter aber hoffe dass du mir trotzdem helfen kannst.
Ich bin Student und Neuling mit CATIA.Bin auf deinen Code gestoßen und
so was ähnliches brauche ich auch. Habe dein Vorschlag getestet aber bei mir hat nicht funktioniert mit folgender Fehlermeldung:


CNEXT - CATScriptErrorMessages - ScriptingERR_1002
---------------------------
Das Script "BOM.CATScript" ausführen.
Die Scriptmaschine für CATScript hat den folgenden Fehler gemeldet:

Quelle: Laufzeitfehler in Microsoft VBScript
Beschreibung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht.: 'CATIA'
Linie:14
Spalte: 4

Set CATIA = GetObject(, "CATIA.APPLICATION")

Wo liegt das Problem?
Arbeite mit CATIA V5 R19 SP3

Vielen Dank

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 13. Dez. 2011 18:12    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 catiavba 10 Unities + Antwort hilfreich

Servus
Das Script funktioniert (wenn ich den Titel des Themas richtig interpretiere) in VBA aus Excel heraus und nicht als CATScript.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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