Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA ------> Excel

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:  CATIA ------> Excel (2766 mal gelesen)
danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 09. Jul. 2009 13:43    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

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


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 09. Jul. 2009 14: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 danielsc 10 Unities + Antwort hilfreich

Hallo,
ich würde mal auf ein Laufzeit-Problem tippen. Weißt du denn, an welcher Stelle das Makro aussteigt?
Ggf. hilft, davor ein Wait-Befehl vorzusetzten.
Siehe hierzu http://ww3.cad.de/foren/ubb/Forum137/HTML/001695.shtml#000004

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 09. Jul. 2009 14:22    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

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


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 09. Jul. 2009 15:05    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 danielsc 10 Unities + Antwort hilfreich

Hallo,
hast du spaßes halber mal die einzelnen Werte für wert1, wert2 und wert3 mal abgefragt? Sind diese Variablen ggf beim 2. Durchlauf vielleicht leer?

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 09. Jul. 2009 15:23    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

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



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 09. Jul. 2009 15:38    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

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


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 09. Jul. 2009 17:20    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 danielsc 10 Unities + Antwort hilfreich

Danke 
dann versuch mal, den laufenden Excel-Process zu killen (steh bestimmt irgendwo im Buch), sodass du immer ein "frisches" Excel geööfnet hast.
Alternativ kannst du vorab versuchen, Excel mit GetObject neu zuzuweisen.

Viel Erfolg

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Private Seite
Xing
Kochbuch - CATIA V5 automatisieren

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

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 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 danielsc 10 Unities + Antwort hilfreich

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



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 13. Jul. 2009 12:41    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

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



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 13. Jul. 2009 16: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

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

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