[CDR 2023] Добавление пантонов макросом в палитру без дубликатов из-за разных процентов

keramer82

Участник
Топикстартер
Сообщения
56
Реакции
5
Доброго всем времени суток! Вопрос, собственно в теме. Добавляю пантоны макросом в палитру, и вроде все хорошо, если в документе только 100% плашки. Но если в документе один и тот же пантон есть в разных процентах, допустим, "PANTONE 2728 C – 20%", "PANTONE 2728 C – 50%", "PANTONE 2728 C – 85%", то в палитру добавляется три раза "PANTONE 2728 C". как не добавлять в палитру пантон, если он там уже есть, хоть и другими процентами. Может как то по названию проверить? Только у меня с VBS плохо... Прошу, пожалуйста, помогите с кодом. Вот так я добавляю цвета в палитру:
Код с оформлением (BB-коды):
For i = 0 To pal.ColorCount
    If pal.Colors(i).IsSpot Then
        'Вот тут нужно проверить есть ли уже пантон с таким именем в палитре
        colsAll.AddColor pal.Colors(i)
        colsNameAll.Add pal.Colors(i).Name
    End If
Next i
 

keramer82

Участник
Топикстартер
Сообщения
56
Реакции
5
Попробовал так, но не получилось,в палитре по прежнему один и тот же пантон, только с разными процентами...
Код с оформлением (BB-коды):
For i = 0 To pal.ColorCount
        If pal.Colors(i).IsSpot Then
            
            For j = 0 To colsAll.ColorCount
                If pal.Colors(i).Name = colsAll.Colors(j).Name Then
                    colsAll.AddColor pal.Colors(i)
                    colsNameAll.Add pal.Colors(i).Name
                End If
            Next j
        
        End If
    Next i
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 290
Реакции
10 863
Попробовал так, но не получилось,в палитре по прежнему один и тот же пантон, только с разными процентами...
Код с оформлением (BB-коды):
For i = 0 To pal.ColorCount
        If pal.Colors(i).IsSpot Then
           
            For j = 0 To colsAll.ColorCount
                If pal.Colors(i).Name = colsAll.Colors(j).Name Then
                    colsAll.AddColor pal.Colors(i)
                    colsNameAll.Add pal.Colors(i).Name
                End If
            Next j
       
        End If
    Next i
Так надо на неравенство проверять, а у вас наоборот.
 

keramer82

Участник
Топикстартер
Сообщения
56
Реакции
5
Так надо на неравенство проверять, а у вас наоборот.
Спасибо. Что-то я, видимо совсем туплю. попробовал изменить знак равенства, не помогло.
Код с оформлением (BB-коды):
For i = 0 To pal.ColorCount
        If pal.Colors(i).IsSpot Then
            
            For j = 0 To colsAll.ColorCount
                If pal.Colors(i).Name <> colsAll.Colors(j).Name Then
                    colsAll.AddColor pal.Colors(i)
                    colsNameAll.Add pal.Colors(i).Name
                End If
            Next j
        
        End If
    Next i
 

fersat

Участник
Сообщения
19
Реакции
15
Надо проверять на неравенство ВСЕ элементы colsAll.

Вот приблизительно так
Код:
flag = true
For j = 0 To colsAll.ColorCount
  flag = flag and (pal.Colors(i).Name<>colsAll.Colors(j).Name)
Next j

if flag then
  colsAll.AddColor pal.Colors(i)
  colsNameAll.Add pal.Colors(i).Name
end if
 
  • Спасибо
  • Огонь
Реакции: eugeny и keramer82

keramer82

Участник
Топикстартер
Сообщения
56
Реакции
5
Надо проверять на неравенство ВСЕ элементы colsAll.

Вот приблизительно так
Код:
flag = true
For j = 0 To colsAll.ColorCount
  flag = flag and (pal.Colors(i).Name<>colsAll.Colors(j).Name)
Next j

if flag then
  colsAll.AddColor pal.Colors(i)
  colsNameAll.Add pal.Colors(i).Name
end if
Спасибо огромное! Реально помогли. Теперь все отлично работает. Как же здОрово, что есть в мире люди, к которым можно обратиться за помощью, сам бы я долго еще ломал голову, пока не сломал. Спасибо Вам, fersat огромное, еще раз!
 
  • Спасибо
Реакции: eugeny и ~RA~

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 290
Реакции
10 863
Надо проверять на неравенство ВСЕ элементы colsAll.

Вот приблизительно так
Код:
flag = true
For j = 0 To colsAll.ColorCount
  flag = flag and (pal.Colors(i).Name<>colsAll.Colors(j).Name)
Next j

if flag then
  colsAll.AddColor pal.Colors(i)
  colsNameAll.Add pal.Colors(i).Name
end if
Собственно, именно это я и имел в виду ;)