Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Stückliste in Excel Zeit?

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Stückliste in Excel Zeit? (1262 mal gelesen)
Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


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

Beiträge: 227
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 28. Nov. 2013 08:57    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,
ich habe mir ein Addin geschrieben mit dem ich die Stückliste aus der Zeichnung in die Excel-Vorlage eintrage. Das Funktioniert auch alles einwandfrei, nur was mich etwas stört ist die Zeit.
Wenn ich eine Stückliste mit 75 Positionen habe dauert das ca.6s bis die Daten eingetragen werden.

Da der Eine oder Andere sich auch so ein Addin geschrieben hat würde ich gerne Wissen wie lange es denn bei Euch dauert.

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

CADboogie
Mitglied
Dipl.-Ing. Konstrukteur für Luftführungssysteme


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

Beiträge: 241
Registriert: 05.08.2009

Intel Xeon@ 3,07 GHz
NVIDIA Quadro 2000
Windows 7, SP1, 64Bit
Inventor 2012 (SP2), 2014 (SP2)

erstellt am: 28. Nov. 2013 09: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 Andreas01 10 Unities + Antwort hilfreich

Guten morgen,

ich hab mal so etwas versucht, hat aber ähnlich lange gedauert, wobei 6s bei 75 Einträgen mir noch nicht übermäßig lange vorkommt.

------------------
Gruß aus Aachen,
Walter

*** Man kann nicht alles gleichzeitig machen, aber man kann alles gleichzeitig sein lassen ***

[Diese Nachricht wurde von CADboogie am 28. Nov. 2013 editiert.]

[Diese Nachricht wurde von CADboogie am 28. Nov. 2013 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 28. Nov. 2013 11:42    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 Andreas01 10 Unities + Antwort hilfreich

Moin

Exportierst du die gesamte Teileliste (oder meinst du wirklich die Stückliste?) oder liest du einzelne Zellwerte aus? Ist der betreffende Codeteil Staatsgeheimnis? Wird innerhalb der Routine erst eine Excelinstanz gestartet oder greifst du auf eine laufende Instanz zu?
Du lieferst mehr Infos und ich polier derweil meine Glaskugel.

------------------
MfG
Ralf

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

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


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

Beiträge: 227
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 28. Nov. 2013 12:14    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 Ralf,

Du hast recht ich exportiere die Teileliste und lese die Werte Zeilenweise aus.

Ich gehe wie folgt vor:

- als erstes Speicher ich die Teileliste in eine Matrix

    ReDim Matrix_Stückliste(anzahlRow - 1, anzahlColumn - 1)
       
        Dim läufer As Integer = 0
        For i As Integer = 0 To oStückliste.PartsListRows.Count - 1

            'Überprüfen ob die Reihe nicht unsichtbar ist
            If oStückliste.PartsListRows.Item(i + 1).Visible = True Then

                For k As Integer = 0 To anzahlColumn - 1
                    Matrix_Stückliste(läufer, k) = oStückliste.PartsListRows.Item(i + 1).Item(k + 1).Value.ToString
                Next
                läufer += 1
            End If
        Next

das dauert so ca. 2 sekunden bei den 75 Positionen

- dann Öffne ich Excel wenn der noch nicht offen ist

        'Excell Öffnen

        On Error Resume Next
        objExcel = GetObject(, "Excel.Application")
        If Err.Number Then
            Err.Clear()
            On Error Resume Next
            objExcel = CreateObject("Excel.Application")
            If Err.Number Then
                Err.Clear()
                MsgBox("Kann Excel nicht öffnen.")
            End If
        End If


        objExcel.Run()
        objWorkbook = objExcel.Workbooks.Open(Stücklisten_Vorlage_Pfad)
        objWorksheet = objWorkbook.Sheets("Stückliste")
        objExcel.Visible = True


- danach werden die Daten eingetragen

For i As Integer = 0 To Matrix_Stückliste.GetUpperBound(0) 'int_Anz_Row

            Dim zaehler As Integer
            zaehler += 1
            'Daten Eintragen

            'POS. Nummer eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 1) = Matrix_Stückliste(i, 0).ToString

            'Stückzahl eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 4) = Matrix_Stückliste(i, 1).ToString

            'Zeichnungsnummer eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 6) = Matrix_Stückliste(i, 2).ToString

            'Benennung eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 5) = Matrix_Stückliste(i, 3).ToString

            'Werkstoff eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 8) = Matrix_Stückliste(i, 4).ToString

            'Bestellung/Rohmass eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 9) = Matrix_Stückliste(i, 5).ToString

            'DIN eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 10) = Matrix_Stückliste(i, 6).ToString

            'Firma/Bemerkung eintragen
            objExcel.Worksheets("Stückliste").Cells(zaehler + 8, 11) = Matrix_Stückliste(i, 7).ToString

        Next

das Problem habe ich schon seit längeren aber bis jetzt keine Zeit gehabt sich darum zu kümmern. Ich weiß das es früher auf jedem Fall schneller ging.

Gruß
Andreas

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 28. Nov. 2013 13:08    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 Andreas01 10 Unities + Antwort hilfreich

Hallo

Du hast da genau die 2 Möglichkeiten drin, die schnelleres Übertragen nahezu ausschließen. Erst die Prüfung auf unsichtbare Zeilen (die sind bei uns verboten, da entweder ein Teil in der BG drin ist oder nicht) und zweitens verteilst du die Zellen in Excel anders als sie in der Teileliste vorkommen. 
In Inventor 2013 (64-bit Version?) läuft meines Wissens VBA noch als 32-bit Anwendung und kommuniziert über einen Hostprozeß mit Inventor. VBA ist eh nie eine Rakete gewesen, aber in der Konstellation hat noch einer die Handbremse angezogen. 

Du könntest mal versuchen beim Einlesen der Teileliste das Array schon passend zur Exceltabellenstruktur zu bauen und die folgende Funktion zu nutzen um das in einem Rutsch ins Excel zu schreiben. Den Code müßtest du noch auf VBA anpassen. Ich kann auch nicht garantieren, das VBA dieses Vorgehen unterstützt.

Code:
Private Sub WriteArrayToExcelsheet(ByVal oSheet As Excel.Worksheet, ByVal aArray(,) As String)
       
            Dim iRangeX As Integer
            Dim iRangeY As Integer

            iRangeX = UBound(aArray, 1) 'Länge der ersten Arraydimension
            iRangeY = UBound(aArray, 2) 'Länge der zweiten Arraydimension

            'Transfer the array to the worksheet starting at cell A10.
            oSheet.Range("A10").Resize(iRangeX + 1, iRangeY).Value = aArray

    End Sub


------------------
MfG
Ralf

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

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


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

Beiträge: 227
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 29. Nov. 2013 07:08    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

Morgen,

danke für die Tips. Die Prüfung ob eine Zeile unsichtbar ist kann man Zeitmäßig vernachlässigen. Dann habe ich mein Array so angepasst das es mit der Excel-Stücklise passt und die Prozedur verwendet. Jetzt läuft alles sehr schnell ab.

Gruß

Andreas

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