[CDR X5-X8] замена заданного текста системной датой

stickfolder

Участник
Топикстартер
Сообщения
3
Реакции
0
Добрый день.
Задача следующая. Имеем большое количество cdr-файлов (макетов этикеток). Вся текстовая информация в данных файлах реализована в виде текста, то есть шрифты не в кривых. В каждом макете есть объект Artistic text в котором написано к примеру:
Дата изготовления: 2023 г.

Что нужно:
Необходим макрос, вызывая который вместо "2023" вставляется реальная дата из Windows в формате "месяц, год".
Пример:
было Дата изготовления: 2023 г.
стало Дата изготовления: 04. 2023 г. либо Дата изготовления: 05. 2023 г. и так далее.
То есть при вызове макроса мы производим замену текста на реальную дату.

Как я работаю сейчас:
Использую операцию Sub Translate()
Но это просто замена одного текста на другой.

Вот код:
Код:
Sub Translate()

Optimization = True ' turn off screen updates
ActiveDocument.PreserveSelection = False 'ignore last selection

Dim s As Shape
For Each s In ActivePage.FindShapes(, cdrTextShape)
s.Text.Replace "oldtext", "newtext", False, ReplaceAll:=True
...
Next s

Optimization = False ' restore screen updates
ActiveDocument.PreserveSelection = True ' remember last selection
ActiveDocument.ActiveWindow.Refresh ' update drawing window
End Sub

где "oldtext" это то, что я меняю. Например вместо 2022, заменяю 2023.
"newtext" - это то, чем заменяем наш 2022.
Но нужно, чтобы в "newtext" подгружалась именно реальная дата в формате "месяц, год".

Подскажите пожалуйста, как дополнить вышеуказанный код? Подходит-ли он для данной задачи, или будут другие предложения, такие как просто вставка прямоуголника (заглушки) с актуальной датой.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Наверное имелось в виду
Код:
s.Text.Replace "oldtext", "newtext", False, ReplaceAll:=True
на
Код:
s.Text.Replace "2023 г.", Month(Date) & ". " & Year(Date), False, ReplaceAll:=True
 
  • Спасибо
Реакции: mnemonix и stickfolder

stickfolder

Участник
Топикстартер
Сообщения
3
Реакции
0
Наверное имелось в виду
Код:
s.Text.Replace "oldtext", "newtext", False, ReplaceAll:=True
на
Код:
s.Text.Replace "2023 г.", Month(Date) & ". " & Year(Date), False, ReplaceAll:=True
Спасибо. Таким образом работает!
Из того, что получилось: выдаёт 4. 2023. Хотелось-бы конечно 04. 2023
Буду ковырять дальше, чтобы попробовать изменить формат даты. Отпишусь о результатах, как получится.