Public ErrorReturn As Integer


Sub CATMain()

If CATIA.Documents.Count = 0 Then
    Box = MsgBox("Es wurde kein aktives Dokument identifiziert" + Chr(10) + "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", vbInformation, "Hinweis")
    Exit Sub
End If

For i = 1 To CATIA.Documents.Count

Dim oDocument As Document

 If CATIA.Documents.Count = 0 Then
    Exit Sub
 End If
Set oDocument = CATIA.ActiveDocument



If TypeName(oDocument) = "PartDocument" Then
    PartDoc
    If ErrorReturn = 1 Then
        Exit Sub
    End If
    Set oDocument = CATIA.ActiveDocument
    oDocument.Close
End If

If CATIA.Documents.Count = 0 Then
    Exit Sub
End If
Set oDocument = CATIA.ActiveDocument
If TypeName(oDocument) = "ProductDocument" Then
    ProductDoc
    If ErrorReturn = 1 Then
       Exit Sub
    End If
    Set oDocument = CATIA.ActiveDocument
    oDocument.Close
End If

If CATIA.Documents.Count = 0 Then
    Exit Sub
End If

Set oDocument = CATIA.ActiveDocument
If TypeName(oDocument) = "DrawingDocument" Then


'__________________Ansicht bestimmen_________________________________
Dim oDrwDocument As Document
Set oDrwDocument = CATIA.ActiveDocument
Dim oDrwSheets As DrawingSheets
Set oDrwSheets = oDrwDocument.Sheets
Dim oDrwSheet As DrawingSheet
oDrwDocument.Sheets.Item(1).Activate
Set oDrwSheet = oDrwSheets.ActiveSheet
Dim oViews As DrawingViews
Set oViews = oDrwSheet.Views
Dim oView As DrawingView
Set oView = oViews.ActiveView
oView.Activate
'_______________________________________________________________

'__________________________Dateipfad LESEN___________________________________________


If oDrwSheets.Parent.Path = "" Then
  Mldg_1 = "Die aktive Zeichnung hat keine externen Refenzen"
  Mldg_2 = "Bitte schließen Sie alle Zeichnung die nicht auf CATParts oder CATProduct verlinkt sind und starten Sie das Makro erneut"
  Mldg_3 = "Das Makro wird nun beendet!"
  Stil = vbOKOnly + vbCritical
  Titel = "Abbruch"
  Box = MsgBox(Mldg_1 + Chr(10) + Mldg_2 + Chr(10) + Mldg_3, Stil, Titel)
  Exit Sub
End If


Set ProductDrawn = oDrwSheet.Views.Item("Vorderansicht").GenerativeBehavior.Document
oPath = ProductDrawn.Parent.FullName
oName = ProductDrawn.Parent.Name

'__________________________________ STRING zerlegen  ____________________________
 
On Error Resume Next
vTXT = Left(oName, InStrRev(oName, ".") - 1)

BenennTXT = Right(vTXT, Len(vTXT) - 18)   'Right Left

PosTXT1 = Left(vTXT, InStrRev(vTXT, "_") - 1)
PosTXT2 = Right(PosTXT1, Len(PosTXT1) - 14)   'Right Left

AuftragNrTXT1 = Left(PosTXT1, Len(PosTXT1) - 9)   'Right Left

bgTXT1 = Left(PosTXT1, Len(PosTXT1) - 5)   'Right Left
bgTXT2 = Right(bgTXT1, Len(bgTXT1) - 9)   'Right Left

'AuftragNr-ZSB = Left(vTXT, InStrRev(vTXT, "_") - 1)   'Right Left



'________________________________________________________________________________________

'__________________Auf Blatt 2 wechseln_________________________________
Set oDraw = CATIA.ActiveDocument                                                                            ' Zeichnung als aktives Dokument bestimmen
Set oSheets = oDraw.Sheets
oDraw.Sheets.Item(1).Activate
Set oSheet = oSheets.ActiveSheet
oSheet.Activate
Dim j As Integer
Dim oText As DrawingText
Dim ocText As DrawingTexts

'________________________________________________________________________________________

'__________________Alle Views ablaufen und nach Texten suchen_________________________________
    For k = 1 To oDraw.Sheets.Count                       'Schleife fuer alle Sheets
        Set oSheet = oDraw.Sheets.Item(k)
        'If oSheet.IsDetail Then                         'Ist das Sheet kein Detail-Sheet?
            For j = 1 To oSheet.Views.Count             'Schleife fuer alle Views im Sheet
            Set oView = oSheet.Views.Item(j)
                Set ocText = oView.Texts
                    Z = 0
                        For s = 1 To ocText.Count
                        Set oText = ocText.Item(s)

                        If oText.Name = "Benennung" Then
                        oText.Text = BenennTXT
                        Z = 1
                        End If

                        If oText.Name = "Pos" Then
                        oText.Text = PosTXT2
                        Z = 1
                        End If

                        If oText.Name = "Auftrag" Then
                        oText.Text = AuftragNrTXT1
                        Z = 1
                        End If

				If oText.Name = "Zeich-Nr" Then
                        oText.Text = vTXT
                        Z = 1
                        End If

                        If oText.Name = "BG" Then
                        oText.Text = bgTXT2
                        Z = 1
                        End If
 
				If oText.Name = "Zeich-Nr" Then
                        oText.Text = PosTXT1
                        Z = 1
                        End If
                       
				Next
                
            Next

        'End If
    Next

'Box = MsgBox ( Z)
'________________________________________________________________________________

'______________________________ Text suchen und ueberschreiben __________________________________


'________________________________________________________________________________________

'__________________In den Vordergrund wecheln_________________________________

Dim ErrorFrame As Integer

Set oDraw = CATIA.ActiveDocument                                                                            ' Zeichnung als aktives Dokument bestimmen
Set oSheets = oDraw.Sheets
oDraw.Sheets.Item(1).Activate
Set oSheet = oSheets.ActiveSheet
oSheet.Activate

Set oViews = oSheet.Views
oSheet.Views.Item(1).Activate                                                                                   ' BLATT001 aktivieren
Set oView = oViews.Item(1)
oView.Activate

ErrorFrame = 0
If Z <> 1 Then
    'Box = MsgBox("Der passende Zeichnungsrahmen wurde nicht gefunden, bzw. die Textfelder im Schriftfeld wurden umbenannt." + Chr(10) + "Bitte tauschen Sie den Rahmen gegen aktuellen Zeichnungsrahmen mit aktuellen Schriftfeld", vbCritical, "Abbruch")
    ErrorFrame = 1
End If

'________________________________________________________________________________________

'__________________________________Aufteilung Dateiname & Dateipfad____________________________
Dim nName As String
nName = Left(oPath, InStrRev(oPath, ".CAT") - 1)

'________________________________________________________________________________________

'__________________________________Zeichnung speichern____________________________


CATIA.DisplayFileAlerts = False
Datei = nName & ".CATDrawing"
            CATIA.ActiveDocument.SaveAs (Datei)
'________________________________________________________________________________________

'__________________________________Message Box____________________________

Dim oFile As String
Dim nDoc As Document

If ErrorFrame = 1 Then
  Mldg_1 = "Die Zeichnung wurde erfolgreich gespeichert."
  Mldg_2 = "Zeichnungspfad:  " & Datei
  'Mldg_3 = "Das Schriftfeld konnte nicht aktualisiert werden!"
  Stil = vbOKOnly + vbInformation
  Titel = "Hinweis"
  'Box = MsgBox(Mldg_1 + Chr(10) + Chr(10) + Mldg_2 + Chr(10) + Chr(10) + Mldg_3, Stil, Titel)
Else
  Mldg_1 = "Die Zeichnung wurde erfolgreich gespeichert."
  Mldg_2 = "Zeichnungspfad:  " & Datei
  'Mldg_4 = "Das Schriftfeld wurde erfolgreich synchronisiert!"
  Stil = vbOKOnly + vbInformation
  Titel = "Hinweis"
  'Box = MsgBox(Mldg_1 + Chr(10) + Chr(10) + Mldg_2 + Chr(10) + Chr(10) + Mldg_4, Stil, Titel)
End If

'________________________________________________________________________________________

'__________________________________Zeichnung schließen____________________________

CATIA.ActiveDocument.Close
 
'________________________________________________________________________________________

End If
Next

'________________________________________________________________________________________

'__________________________________Fehlerbehandlungen____________________________

End Sub

Sub PartDoc()

Dim oDoc As PartDocument
Dim Name As String

ErrorReturn = 0
Set oDoc = CATIA.ActiveDocument
Name = oDoc.Path

If Name = "" Then
    sDoc = CATIA.FileSelectionBox("Datei Speichern", "*.CATPart", CatFileSelectionModeSave)
    If sDoc = "" Then
        Box = MsgBox("Sie haben das Speichern des Dokumentes abgebrochen" + Chr(10) + "Das Makro kann nicht weiter ausgefuehrt werden!" + Chr(10) + "Bitte speichern Sie das Dokument ab und starten Sie das Makro erneut", vbCritical, "Abbruch")
        ErrorReturn = 1
        Exit Sub
    End If
    oDoc.SaveAs (sDoc)
Else
    oDoc.Save
End If

End Sub

Sub ProductDoc()

Dim oDoc As ProductDocument
Dim Name As String

ErrorReturn = 0
Set oDoc = CATIA.ActiveDocument
Name = oDoc.Path

If Name = "" Then
    sDoc = CATIA.FileSelectionBox("Datei Speichern", "*.CATProduct", CatFileSelectionModeSave)
    If sDoc = "" Then
        Box = MsgBox("Sie haben das Speichern des Dokumentes abgebrochen" + Chr(10) + "Das Makro kann nicht weiter ausgefuehrt werden!" + Chr(10) + "Bitte speichern Sie das Dokument ab und starten Sie das Makro erneut", vbCritical, "Abbruch")
        ErrorReturn = 1
        Exit Sub
    End If
    oDoc.SaveAs (sDoc)
Else
    oDoc.Save
End If

End Sub

Sub Zeichnung()


End Sub