Option Explicit

Private Sub Main()
    Dim cuApplication                           As Cumulus5.Application
    Dim cuCatalog                               As Cumulus5.Catalog
    Dim cuRecordLayout                          As Cumulus5.Layout
    Dim cuFieldDefinitions                      As Cumulus5.FieldDefinitions
    Dim cuFieldDefinition                       As Cumulus5.FieldDefinition
    Dim cuAvailableFields                       As Cumulus5.LinkList
    Dim cuEntry                                 As Cumulus5.LinkEntry
    Dim i                                       As Long
    Dim boolFieldTemp                           As Boolean
    
    'Erzeugung des Cumulus 5 Objektes zur Verbindung zum Cumulus Client / Single User
    Set cuApplication = CreateObject("Cumulus5.Application")

    Set cuCatalog = cuApplication.FrontCollection.Catalog
    Set cuRecordLayout = cuCatalog.RecordLayout
    Set cuFieldDefinitions = cuRecordLayout.FieldDefinitions
    Set cuAvailableFields = cuRecordLayout.AvailableFields
    
    For i = 0 To cuAvailableFields.Count - 1
        Set cuEntry = cuAvailableFields.Item(i)
        If cuEntry.FieldUID = "{C8BE2DC5-F341-11D3-901C-0080AD80C556}" Then 'Blende
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E2B-5F6A-11D2-8F20-0000C0E166DC}" Then 'Knstler
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 1
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E4E-5F6A-11D2-8F20-0000C0E166DC}" Then 'Kamera Modell
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 1
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E2C-5F6A-11D2-8F20-0000C0E166DC}" Then 'Copyright-Vermerk
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 3
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E51-5F6A-11D2-8F20-0000C0E166DC}" Then 'Aufnahmedatum
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 1
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E0B-5F6A-11D2-8F20-0000C0E166DC}" Then 'Notizen
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = True
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 2
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{133293B4-F598-11D3-901F-0080AD80C556}" Then 'Aufnahme Richtung
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 1
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E52-5F6A-11D2-8F20-0000C0E166DC}" Then 'Belichtungszeit
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E53-5F6A-11D2-8F20-0000C0E166DC}" Then 'F Nummer
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCA-F341-11D3-901C-0080AD80C556}" Then 'Blitz Modus
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E56-5F6A-11D2-8F20-0000C0E166DC}" Then 'Brennweite [mm]
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCD-F341-11D3-901C-0080AD80C556}" Then 'ISO Geschwindigkeit
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{3DE69FA1-2AF7-11D4-9067-0080AD80C556}" Then 'Lichtquelle
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{AF4B2E4D-5F6A-11D2-8F20-0000C0E166DC}" Then 'Kamera Hersteller
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 1
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCE-F341-11D3-901C-0080AD80C556}" Then 'Maximale Blende
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCE-F341-11D3-901C-0080AD80C556}" Then 'Belichtungsmesser Modus
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCE-F341-11D3-901C-0080AD80C556}" Then 'Verschlusszeit [s]
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCE-F341-11D3-901C-0080AD80C556}" Then 'Software
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
        If cuEntry.FieldUID = "{C8BE2DCE-F341-11D3-901C-0080AD80C556}" Then 'Objekt Abstand
            On Error Resume Next
                cuFieldDefinitions.Add cuEntry.FieldUID, cuEntry.FieldType, cuEntry.Name
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).AllowUserToEdit = False
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).IndexKind = 0
                cuFieldDefinitions.ItemByID(cuEntry.FieldUID).LinkToAllMatchingFields = True
        End If
    Next
    MsgBox "Der Katalog wurde erfolgreich fr Exif-Daten vorbereitet.", vbOKOnly, "Cumulus"
End
End Sub
    
    'German Field-Name      Cumulus Field UID                       Sort/Search     Search      User Edit


    'Blende                 {C8BE2DC5-F341-11D3-901C-0080AD80C556}      -               -           -
    'Knstler               {AF4B2E2B-5F6A-11D2-8F20-0000C0E166DC}      x               -           -
    'Kamera Modell          {AF4B2E4E-5F6A-11D2-8F20-0000C0E166DC}      x               -           -
    'Copyright-Vermerk      {AF4B2E2C-5F6A-11D2-8F20-0000C0E166DC}      x               x           -
    'Aufnahmedatum          {AF4B2E51-5F6A-11D2-8F20-0000C0E166DC}      x               -           -
    'Notizen                {AF4B2E0B-5F6A-11D2-8F20-0000C0E166DC}      -               x           x
    'Aufnahme Richtung      {133293B4-F598-11D3-901F-0080AD80C556}      -               -           -
    'Belichtungszeit        {AF4B2E52-5F6A-11D2-8F20-0000C0E166DC}      -               -           -
    'F Nummer               {AF4B2E53-5F6A-11D2-8F20-0000C0E166DC}      -               -           -
    'Blitz Modus            {C8BE2DCA-F341-11D3-901C-0080AD80C556}      -               -           -
    'Brennweite [mm]        {AF4B2E56-5F6A-11D2-8F20-0000C0E166DC}      -               -           -
    'ISO Geschwindigkeit    {C8BE2DCD-F341-11D3-901C-0080AD80C556}      -               -           -
    'Lichtquelle            {3DE69FA1-2AF7-11D4-9067-0080AD80C556}      -               -           -
    'Kamera Hersteller      {AF4B2E4D-5F6A-11D2-8F20-0000C0E166DC}      x               -           -
    'Maximale Blende        {C8BE2DCE-F341-11D3-901C-0080AD80C556}      -               -           -
    'Belichtungsmesser Modus {C8BE2DD0-F341-11D3-901C-0080AD80C556}     -               -           -
    'Verschlusszeit [s]     {B2373251-F405-11D3-901D-0080AD80C556}      -               -           -
    'Software               {AF4B2E09-5F6A-11D2-8F20-0000C0E166DC}      -               -           -
    'Objekt Abstand         {AF4B2E55-5F6A-11D2-8F20-0000C0E166DC}      -               -           -
