- Сообщения
- 1 904
- Реакции
- 335
Можно ли проверить, существует ли в рекламном модуле слово "Реклама", если нет, то добавить это слово?
ТЗ формулируется в побудительном наклоненииОтличное ТЗ!
Sub aaa()
Dim s As Shape
m = ""
For Each s In ActivePage.Shapes.FindShapes(, cdrTextShape)
t = s.Text.Story
m = m & vbCr & s.Text.Story.Font
If s.Text.Find("реклама", True) Then m = m & vbCr & "0 " & t
If t = "реклама" Then m = m & vbCr & "1 " & t
If StrComp(t, "реклама", vbTextCompare) Then m = m & vbCr & "2 " & t
If StrComp(t, "@5:;0<0", vbTextCompare) Then m = m & vbCr & "3 " & t
m = m & vbCr
Next s
MsgBox m
End Sub
Sub aaa()
Dim s As Shape
Dim reklama As Shape
ActiveDocument.Unit = cdrMillimeter
For Each s In ActivePage.Shapes.FindShapes(, cdrTextShape)
t = s.Text.Story
If t = "Реклама" Or t = "реклама" Then m = 1
Next s
If m <> 1 Then
Set reklama = ActiveDocument.ActivePage.ActiveLayer.CreateArtisticText(0, 0, "Реклама")
reklama.Text.FontProperties.Name = "Fira Sans"
reklama.Text.FontProperties.Size = 5
reklama.RotateEx 90#, 90, 90
reklama.PositionX = ActiveDocument.ActivePage.SizeWidth - 1.8
reklama.PositionY = ActiveDocument.ActivePage.SizeHeight - 8
End If
End Sub
Ваш код не найдёт "рекламу" в клипах (мне для примера данная обвязка не нужна была)Вот так сделал:
Зачем перебирать все шейпы не понимаю.Можно ли проверить, существует ли в рекламном модуле слово "Реклама", если нет, то добавить это слово?
Макеты разного размера. И разный цвет фона - черный шрифт по черному фону - тоже будет невиден... + на месте размещения "Реклама" может расположен "полезный текст" - далее уже руками передвинуть.Все макеты одного размера? Слово "реклама" может встречаться не в качестве самостоятельной сноски, а в самом тексте макета или в какой-либо юридической сноске. Может, стоит дополнительно проверять на шрифт, кегль, цвет надписи?
В клипах искать и не надо, пусть лежит просто на слое. Серых шрифтов не должно быть. Обычно "служебную" информацию стараюсь набирать Pragmatica или Fire SansВаш код не найдёт "рекламу" в клипах (мне для примера данная обвязка не нужна была)
оператор "=" сбойнёт на "сером шрифте" (забыл упомянуть его в своём посте), лучше использовать s.Text.Find("реклама", False)
(запостил пример с ошибкой "" вместо "реклама", сейчас поправил)
Из цикла перебора стоит выходить по Exit For сразу после нахождения "рекламы" и не продолжать перебирать остальные слова