Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Problem mit SaveAs unter VBA

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:  Problem mit SaveAs unter VBA (5813 mal gelesen)
Modellierer
Mitglied
Ingenieur Maschinenbau

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

Beiträge: 4
Registriert: 26.01.2011

Windows XP SP3
Catia V5 R19

erstellt am: 26. Jan. 2011 09: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 sehr verehrte und hilfreiche CAD.DE Gemeinde,
bin schon längere Zeit aktiver Leser zahlreicher Beiträge hier im Forum und dies stellt nun meinen ersten eigenen dar.

Ich stehe vor einem Problem bei der Speicherung eines *.CatParts und hoffe auf Eure Hilfe.

Problemstellung: Innerhalb eines Makros (VBA Projekt) wird ein CatProduct in ein CatPart mittels der Funktion ("product to Part") umgewandelt.
Funktioniert wunderbar.
Daraufhin sind zwei Fenster geöffnet:ursprüngliches Product und erzeugtes ALLCatPart
Dieses AllCatPart soll nun gespeichert werden, unter einem Namen den der Nutzer interaktiv auswählen kann.

Folgender Code übernimmt diese Aufgabe.


Private Sub CommandButton12_Click()
Dim Datei As String
Dim timestamp
Dim Fehlermeldung
CATIA.DisplayFileAlerts = False
Datei = CATIA.FileSelectionBox("Speicherung", "*.CATPart", CatFileSelectionModeSave)


                    CATIA.ActiveDocument.SaveAs (Datei)

CATIA.DisplayFileAlerts = True
                   

End Sub

Soweit so gut.Ich bekomme jedoch eine Fehlermeldung falls in der Fileselectionbox eine Datei ausgewählt die bereits besteht und somit überschrieben werden muss. Falls ich einen neuen Dateinamen verwende funktioniert es problemlos.
Fehlermeldung lautet folgendermaßen:

Laufzeitfehler '-2147467259(80004005)'
Die Methode 'SaveAs' für das Objekt 'PartDocument' ist fehlgeschlagen

Interessant ist zudem, daß der Code bei Neustart von Catia immer funktioniert und die Fehlermeldung bei überschreiben einer Datei erst nach dem zweiten Aufruf des Makros innerhalb einer Sitzung auftritt.

Kann es sein das sich dort dann noch irgendetwas im Catia Speicher befindet woran sich Catia stört?
Fenster werden jedoch alle geschlossen nach einem kompletten Durchlauf des Makros!

Ich hoffe Ihr könnt mir weiterhelfen?
Vielen Dank schon einmal

Schönen Tag

Der Modellierer

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 26. Jan. 2011 09:45    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 Modellierer 10 Unities + Antwort hilfreich

Hallo und herzlich willkommen im Forum,
versuch es mal folgendermaßen...

Code:

...
if Dir(Datei)<> "" Then
    CATIA.ActiveDocument.SaveAs (Datei)
else
    msgbox"Die Datei wurde nicht gespeichert..."
    'Alternativ mit GoTo wieder nach oben springen
endif
...

HTH

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Modellierer
Mitglied
Ingenieur Maschinenbau

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

Beiträge: 4
Registriert: 26.01.2011

Windows XP SP3
Catia V5 R19

erstellt am: 26. Jan. 2011 10:13    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,
vielen Dank für die schnelle Antwort.
Leider noch dasselbe Problem.
Scheint auf die Einträge gar nicht zu reagieren?
Hab den Vorschlag folgendermaßen eingefügt:

Private Sub CommandButton12_Click()
Dim Datei As String
Dim timestamp
Dim Fehlermeldung
CATIA.DisplayFileAlerts = False
Datei = CATIA.FileSelectionBox("Speicherung", "*.CATPart", CatFileSelectionModeSave)
If Dir(Datei) <> "" Then
    CATIA.ActiveDocument.SaveAs (Datei)
Else
    MsgBox "Die Datei wurde nicht gespeichert..."
    'Alternativ mit GoTo wieder nach oben springen
End If

End Sub

Gruß

der Modellierer

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 26. Jan. 2011 11: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 Modellierer 10 Unities + Antwort hilfreich

Sorry... Ich bin wieder mal dem Copy/Paste zum Opfer gefallen.

Code:
Private Sub CommandButton12_Click()
Dim Datei As String
Dim timestamp
Dim Fehlermeldung
CATIA.DisplayFileAlerts = False
Datei = CATIA.FileSelectionBox("Speicherung", "*.CATPart", CatFileSelectionModeSave)
If Dir(Datei) = "" Then
    CATIA.ActiveDocument.SaveAs (Datei)
Else
    MsgBox "Die Datei wurde nicht gespeichert..."
    'Alternativ mit GoTo wieder nach oben springen
End If
End Sub

Ich habe die Änderung Fett markiert  
Ich möchte allerdings dazu sagen, dass der Code auch ohne Einschränkung bei mir funktioniert. Anscheinend machst du im restlichen Code irgendetwas, was nicht ganz in Ordnung ist.

Ergänzung: Kann es vll. sein, dass du die Datei im Code noch geöffnet oder zugewiesen hast? Dann dürfte es klar sein, warum das so ist. Der Laufzeitfehler entsteht dann dadurch, dass die Datei noch im Zugriff ist ist und nicht überschrieben werden kann!

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

   

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

Modellierer
Mitglied
Ingenieur Maschinenbau

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

Beiträge: 4
Registriert: 26.01.2011

Windows XP SP3
Catia V5 R19

erstellt am: 26. Jan. 2011 11:36    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,
soweit funktioniert der code jetzt, daß er mir die fehlermeldung über die MsgBox bringt und nicht mehr den Laufzeitfehler.Jedoch speichert mir Catia die Datei dennoch nicht.

Wie kann ich überprüfen ob Catia die Datei noch irgendwo vorhält und ich sie deßhalb nicht überschreiben kann?

Wenn ich das Makro "normal" laufen lasse, kann ich es am Ende über einen Button beenden.Innerhalb dessen werden mit der folgenden Schleife alle offenen Fenster geschlossen.

For z = 1 To CATIA.Windows.Count
CATIA.ActiveDocument.Close
Next

Damit sind mit Abschluss des Makros alle Fenster geschlossenen und es sollten keine Dateien mehr im Hintergrund geöffnet sein, oder verstehe ich das falsch?

Wie gesagt erstaunlicherweise kann ich beim ersten Start des Makros nach dem Neustart von Catia problemlos dateien überschreiben, was Deine Theorie unterstützt.

Aber wie kann ich das rausfinden, bzw. den Speicher immer clean zurücklassen?

Vielen Dank

Der Modellierer

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 26. Jan. 2011 11:48    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 Modellierer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Modellierer:

soweit funktioniert der code jetzt, daß er mir die fehlermeldung über die MsgBox bringt und nicht mehr den Laufzeitfehler.Jedoch speichert mir Catia die Datei dennoch nicht.

Der Code würde ja im Fehlerfalle auch nicht speichern. Demnach passiert nichts, wenn die Datei schon vorhanden ist. Daher auch der Hinweis mit GoTo wieder nach oben zu springen, um eine neu Auswahl und die Prüfung zu ermöglichen. Das hat allerdings keinen Sinn, wenn du überschreiben willst bzw. das Makro überschreiben soll.

Ganz ehrlich? Wenn du sagst du schließt alle Dokumente, dann heist das nicht, dass auch alle Dokumente entladen sind. Wenn du z.B. irgendwo ein Copy machst oder per Drag&Drop irgendwo etwas hinziehst im CATIA, dann bleibt das Dokument solange im Zugriff, bis erstens der Windowsspeicher durch einen anderen Windowsspeicher (bei COPY\Paste) überschrieben wurde und in den speziellen Fällen CATIA beendet wurde (bei Copy/Paste im CATIA, Copy via Makro, Drag&Drop im CATIA). Um dir eine vernünftige Aussage machen zu können, bräuchte ich zumindest den kompletten Code, um nach der Ursache forschen zu können.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Modellierer
Mitglied
Ingenieur Maschinenbau

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

Beiträge: 4
Registriert: 26.01.2011

Windows XP SP3
Catia V5 R19

erstellt am: 26. Jan. 2011 12:21    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,
also vielen Dank schon mal für den hilfreichen Input.
Den ganzen Code kann ich leider nicht hier posten.
Aber die vorgeschlagene Route ist perfekt um den Fehler weitgehend abzufangen.

Schönen Tag noch

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