Autor
|
Thema: CATIA ------> Excel (2766 mal gelesen)
|
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 09. Jul. 2009 13:43 <-- editieren / zitieren --> Unities abgeben:
Also ich bin grad mal wieder etwas durch den Wind wegen unserer lieben CATIA Ich hab ein Makro geschrieben welches ein paar Daten in eine vorhandene Exceltabelle schreibt. Funktioniert eigentlich auch aber eben nur eigentlich. Es ist nämlich so das es immer abwechselnd klappt und beim nächsten mal wieder nicht. wenn es nicht klappt kommt immer der "run-time error '91'". ich würde es ja verstehen wenn es nie klappt weil ich dann sicher was falsch gemacht habe aber warum es jedes zweite mal nicht klappt kann ich einfach nicht verstehen Code: Sub Excel(wert1, wert2, wert3, körpername)Dim objXL As Object Dim WB As Workbook Dim i, partnummer, position Dim längeNamePart Dim projektnummer Set objXL = CreateObject("Excel.Application") objXL.Visible = True Set WB = objXL.Workbooks.Open("C:\meinordner\Werkzeuge.xls") Set sheet1 = curwb.Sheets.Item(1) 'Partnummer ermitteln längeNamePart = Len(körpername) Do n = InStr(n + 1, körpername, "l") If n = 0 Then Exit Do position = n Loop partnummer = Right(körpername, längeNamePart - position) + 7 'Projektnummer ermitteln längeNamePart = Len(körpername) Do n = InStr(n + 1, körpername, "Teil") If n = 0 Then Exit Do position = n Loop projektnummer = Left(körpername, position - 2) sheet1.Cells(partnummer, 3).Activate ActiveCell.Value = CInt(wert1) & "x" & CInt(wert2) & "x" & CInt(wert3)
sheet1.Cells(partnummer, 1).Activate ActiveCell.Value = "Teil" & partnummer - 7 sheet1.Cells(2, 2).Activate ActiveCell.Value = projektnummer sheet1.Cells(1, 1).Activate End Sub
[Diese Nachricht wurde von danielsc am 09. Jul. 2009 editiert.] [Diese Nachricht wurde von danielsc am 09. Jul. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 09. Jul. 2009 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für danielsc
|
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 09. Jul. 2009 14:22 <-- editieren / zitieren --> Unities abgeben:
das Makro steigt genau an dieser Stelle aus: Code: ActiveCell.Value = CInt(wert1) & "x" & CInt(wert2) & "x" & CInt(wert3)
ok ich schau mir mal schnell den link an und hoff das ich damit weiter komm Edit:
Also ich hab jetzt mal nen Timer aus dem Link direkt vor die Zeile eingebaut. Er wartet dann auch schön ab (in meinem fall 2 sekunden) und gibt mir dann trotzdem den Fehler aus. Aber natürlich immer nur jedes zweite mal. [Diese Nachricht wurde von danielsc am 09. Jul. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 09. Jul. 2009 15:05 <-- editieren / zitieren --> Unities abgeben: Nur für danielsc
|
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 09. Jul. 2009 15:23 <-- editieren / zitieren --> Unities abgeben:
nein auch beim zweiten durchlauf haben die variablen genau den selben wert. ich machs grad zum testen immer so das ich das makro starte, excel wird geöffnet, werte richtig in die felder geschrieben und dann beende ich excel wieder ohne zu speichern. jetzt müßte ja eigentlich wieder alles genau so sein wie voher. werte wurden alle wieder gelöscht, execel tabelle hat sich nicht verändert da ich nicht gespeichert habe und makro starte ich dann auch komplett von vorne neu. naja und trotzdem kommt es dann zu dem fehler. genauer text des fehlers:"Run-time error '91': Object variable or With block variable not set" hab auch einfach mal die variablen durch einen festen wert ersetzt also: Code: ActiveCell.Value = 1
Passiert aber genau das selbe. Hab ich denn einen Fehler in meinem Code oder kann es sein das mit meinem Exel einfach was nicht stimmt? Kann ja auch mal micrsoft schuld sein und nicht immer ich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 09. Jul. 2009 15:38 <-- editieren / zitieren --> Unities abgeben:
Ok hab jetzt festgestellt das wenn ich das programm zum ersten mal ausführe und es auch alles funktioniert, ich die Excel tabelle schließe und diese dann einfach von hand (also nicht über ein erneutes ausführen des Makros) öffnen will gibt es auch einen fehler. (es wird nur die Menu Leiste und sonst nichts angezeigt) Ich kann dann Excel so oft schließen und manuell wieder öffnen wie ich will und der Fehler bleibt immer da. Erst wenn ich das makro erneut starte (es dann dort zur fehlermeldung kommt) ich excel wieder schließe läuft es danach wieder normal. möglichkeit zwei excel wieder zum laufen zu bringen ist CATIA zu beenden. ich bin grad etwas verwirrt naja mal schauen ob ich raus find woran das liegt. Trotzdem schon mal danke für die hilfe. P.s.: Dein Buch ist echt super ohne dem (und dem forum hier) wär ich ja nurnoch aufgeschmissen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 09. Jul. 2009 17:20 <-- editieren / zitieren --> Unities abgeben: Nur für danielsc
|
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 10. Jul. 2009 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für danielsc
Ich würde erst mal in den Task-Manager schauen, nachdem dein Makro beendet ist. Dann müsste dir nämlich auffallen, dass eine Excel-Applikation in den Prozessen vorhanden ist. Das liegt daran, dass du in deinem Makro zwar eine Excel-Applikation erstellst, diese aber am Ende des Makros nicht wieder schliesst. Also, beende den Excel-Prozess im Task-Manager erst einmal manuell und versuche danach dein Makro neu auszuführen. Wenn das funktioniert hat, erweitere dein Makro, Excel wieder zu schliessen. Grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 13. Jul. 2009 12:41 <-- editieren / zitieren --> Unities abgeben:
Also mir ist in der zwischenzeit auch schon aufgefallen das Excel wirklich nur scheinbar beendet ist aber im Task-Manager in den Prozessen noch drin hängt. Hab jetzt am Ende des Makros noch folgende Zeilen eingefügt: Code: ActiveWorkbook.Save Workbooks.Close Application.Quit
Aber auch der Befehl application.quit schmeißt mir excel nicht aus den prozessen. Naja und wenn ich den excel-prozess dann manuel beende, das makro erneut ausführe kommt jetzt dieser fehler: "Run-time error '462': The remote server machine does not exist or is unavailable" Weiß langsam echt nicht mehr was ich machen soll. kann ja nicht so schwer sein ein paar Werte an Exel zu übergeben und das auch öfters wie zwei mal nacheinander Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
danielsc Mitglied
Beiträge: 45 Registriert: 18.06.2009
|
erstellt am: 13. Jul. 2009 16:04 <-- editieren / zitieren --> Unities abgeben:
Juhu es klappt Hab jetzt den code:
Code: ActiveWorkbook.Save Workbooks.Close Application.Quit
durch diesen ersetzt:
Code: objXL.ActiveWorkbook.Save objXL.ActiveWorkbook.Close objXL.Quit
und jetzt läufts ohne probleme Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |