Autor
|
Thema: Mehrere Daten per Schleife in EINE Excel-Datei (1116 mal gelesen)
|
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 14:21 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, folgender Code Code: pfadzurexceldatei="F:\XXXX\Makrotest.xlsx" Set objexcel = createobject("Excel.application") objexcel.Visible = True 'zeigt Excel an (GUI startet) falls diese Zeile nicht angegeben wird, startet Excel im Hintergrund objexcel.Workbooks.add objexcel.Cells(1, 1).Value = "ventilhub" objexcel.Cells(i+2, 1).Value = length4.value objexcel.Cells(1, 2).Value = "grad um z" objexcel.Cells(i+2, 2).Value = degree objexcel.Cells(1, 3).Value = "hoehe" objexcel.Cells(1, 4).Value = "schenkel1" objexcel.Cells(1, 5).Value = "schenkel2" objexcel.Cells(i+2, 3).Value = length1.value objexcel.Cells(i+2, 4).Value = length2.value objexcel.Cells(i+2, 5).Value = length3.valueobjexcel.ActiveWorkbook.SaveAs(pfadzurexceldatei) objexcel.Quit Set objexcel = Nothing
soll mir jetzt in einer schleife (i von 0 bis 100) in eine Excel-Tabelle schreiben. Ist sowas möglich? Bisher erzeugt er ja immer die Excel-Datei neu und überschreibt mir damit die alte. Und 100 Tabellen möchte ich auch nicht unbedingt erzeugen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 16. Nov. 2012 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für IGELReiser
Hallo IGELReiser, wenn du deine Zeilen und Spalten hochzählst sollte das funktionieren. Sinngemäß:
z=1O' Startzeile s=2' Startspalte objexcel.Cells(z, s).Value = "ventilhub" ... ... Z=Z+1 S=s+1
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 14:53 <-- editieren / zitieren --> Unities abgeben:
wenn ich dich richtig verstanden habe, mache ich das schon (mit dem "i") problem ist, dass in jedem schleifendurchlauf eine neue xlx erstellt wird und die alte überschrieben wird (und somit die vorhergehende zeile wieder leer wird). oder hab ich dich nicht richtig verstanden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 15:15 <-- editieren / zitieren --> Unities abgeben:
okay, ich habe mittlerweile etwas umgecoded und machs so, dass erst alle werte im makro gespeichert werden und diese dann auf einmal in die excel tabelle geschrieben werden. nur, wie muss ich die syntax gestalten, dass ich die variablen hochzählen kann (mit i) also ich stells mir so vor: Set length1(i) = parameters1.Item("hoehe") Set length2(i) = parameters1.Item("schenkel1") Set length3(i) = parameters1.Item("schenkel2") Set length4(i) = parameters1.Item("Ventilhub") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 16. Nov. 2012 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für IGELReiser
|
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 15:31 <-- editieren / zitieren --> Unities abgeben:
|
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 16:05 <-- editieren / zitieren --> Unities abgeben:
Code: Language="VBSCRIPT"Sub CATMain() dim i dim length1(360) dim length2(360) dim length3(360) dim length4(360) dim length5(360) For i = 0 to 180 step 10 Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set relations1 = part1.Relations Set designTable1 = relations1.Item("DesignTable.8") designTable1.Configuration = i part1.Update set Selection1 = partDocument1.selection Set parameters1 = part1.Parameters Set length1(i) = parameters1.Item("hoehe") Set length2(i) = parameters1.Item("schenkel1") Set length3(i) = parameters1.Item("schenkel2") Set length4(i) = parameters1.Item("Ventilhub") next pfadzurexceldatei="F:\XXXX\Makrotest.xlsx" Set objexcel = createobject("Excel.application") objexcel.Visible = True 'zeigt Excel an (GUI startet) falls diese Zeile nicht angegeben wird, startet Excel im Hintergrund objexcel.Workbooks.add for i = 0 to 180 step 10 degree = i+1 objexcel.Cells(1, 1).Value = "ventilhub" objexcel.Cells(i+2, 1).Value = length4(i).value objexcel.Cells(1, 2).Value = "grad um z" objexcel.Cells(i+2, 2).Value = degree objexcel.Cells(1, 3).Value = "hoehe" objexcel.Cells(1, 4).Value = "schenkel1" objexcel.Cells(1, 5).Value = "schenkel2" objexcel.Cells(i+2, 3).Value = length1(i).value objexcel.Cells(i+2, 4).Value = length2(i).value objexcel.Cells(i+2, 5).Value = length3(i).value next objexcel.ActiveWorkbook.SaveAs(pfadzurexceldatei) objexcel.Quit Set objexcel = Nothing End Sub
so sieht mein code nun aus. ich habe zwei schleifen, die erste schreibt mir die werte in die arrays und die zweite liest diese dann aus und schreibt sie mir in die exceldatei. funktioniert aber nicht, da er mir in der zweiten schleife immer dieselben werte ausgibt (und zwar die letzten der vorhergehenden schleife) wo liegt jetzt mein fehler? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 16. Nov. 2012 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für IGELReiser
Bin nicht der Profi was Programmieren betrift, aber must du nicht die Zeilen und Spalten hochzählen. Zitat: objexcel.Cells(1, 1).Value = "ventilhub"
hier schreibst du doch immer in Zeile und Spalte 1 ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 16:28 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Nov. 2012 16:37 <-- editieren / zitieren --> Unities abgeben: Nur für IGELReiser
Servus Wird dein Array korrekt befüllt? Du könntest doch die Werte gleich in der ersten Schleife in die Exceldatei schreiben. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IGELReiser Mitglied
Beiträge: 9 Registriert: 16.11.2012 V5R19
|
erstellt am: 16. Nov. 2012 16:51 <-- editieren / zitieren --> Unities abgeben:
|