Hallo,
folgendes Szenario:
- Ich habe ein CATPart geöffnet in welchem sich mehrere Körper befinden.
- Für jeden Körper des CATParts soll nun eine neue Datei (CATPart) erzeugt werden, und darin ein Körper hineinkopiert werden.
- Anschließend wird das neue CATPart unter dem Namen des Körpers abgespeichert.
- Und dann mit dem nächsten Körper des ursprünglichen CATParts weitergemacht.
- Solange bis alle Körper in Einzeldateien ungewandelt wurden.
Mein Makro hängt bislang beim Copy/Paste. Ich habe es mit angehängt; zusätzlich auch noch eine kleine Ursprungsdatei.
Der wichtigste Codeabschnitt auch hier nochmals:
Private Sub cmdUmwandeln_Click()
'On Error GoTo Errorhandler
If (CATIA.Documents.Count = 0) Then
lblBeschreibung.Caption = "Bitte öffnen Sie ein CATPart!"
Exit Sub
End If
If TypeName(CATIA.ActiveDocument) = "PartDocument" Then
Dim Speicherpfad As String
Dim Speicherpfad2 As String
If CATIA.ActiveDocument.Path = "" Then
MsgBox "Das PartDokument muss zuerst gespeichert werden!"
Call cmdSchliessen_Click
End If
Speicherpfad = CATIA.ActiveDocument.Path & "\"
'MsgBox Speicherpfad
cmdUmwandeln.Enabled = False
cmdSchliessen.Enabled = False
chkUeberschreiben.Enabled = False
lblBeschreibung.ForeColor = vbBlack
lblBeschreibung.Caption = "Bitte warten..."
frmHauptformular.Repaint
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim selection1 As Selection 'Quelle
Dim selection2 As Selection 'Ziel
Dim partDocument2 As PartDocument
Dim part2 As Part
Dim Zaehler As Long
If (chkUeberschreiben.Value = True) Then
CATIA.DisplayFileAlerts = False
End If
For Zaehler = 1 To part1.Bodies.Count
selection1.Add (part1.Bodies.Item(Zaehler))
selection1.Copy
selection1.Clear
Set partDocument2 = CATIA.Documents.Add("Part")
Set selection2 = partDocument2.Selection
selection2.Clear
selection2.Add partDocument2.Part
selection2.PasteSpecial "CATPrtResultWithOutLink"
selection2.Clear
Speicherpfad2 = Speicherpfad & part1.Bodies.Item(Zaehler).Name
partDocument2.SaveAs (Speicherpfad2)
partDocument2.Close
Next Zaehler
Else
MsgBox ("Das Makro funktioniert nur bei CATParts!")
frmHauptformular.Repaint
Exit Sub
End If
CATIA.DisplayFileAlerts = True
lblBeschreibung.Caption = "Fertig!"
lblBeschreibung.ForeColor = vbBlue
lblDateiname.Caption = Zaehler & " Dateien wurden generiert."
cmdUmwandeln.Enabled = True
cmdSchliessen.Enabled = True
chkUeberschreiben.Enabled = True
frmHauptformular.Repaint
Exit Sub
'Errorhandler:
'MsgBox ("Es ist ein Fehler aufgetreten - Makroabbruch!")
'End
End Sub
Die Frage ist: Wie genau muss ich den Code für's Copy/Paste schreiben?
Danke und Gruß
Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP