[CDR X5-X8] Автоматическая печать Даты последней правки на макете

  • Автор темы Автор темы Techred
  • Дата начала Дата начала

Techred

Участник
Топикстартер
Сообщения
5
Реакции
0
Как в Кореле лучше реализовать печать даты на макете?
Т.е. есть поле, в нём должно отображаться дата последнего изменения файла.
Как в индизе сделано: Текст-Текстовые переменные-Вставить переменную-Дата последней правки.
что то подобное в кореле можно сделать, что бы каждый раз ручками не набивать. Спасибо.
 
Дата последней правки.
Имеется в виду - последнее сохранение?
Вот это?
118581
 
IMHO без макроса никак
Да и макрос может вставлять или предыдущее время сохранения или текущее время
По идее можно на событие onSave повесить нечто подобное, но это будет сильно деструктивно
 
Последнее редактирование:
это будет сильно деструктивно
Что вы имеете в виду?
По ссылке нашёл макрос, убрал дату:

Sub IDAT()
Dim DAT As Shape, x#, y#
ActiveDocument.Unit = cdrMillimeter
ActivePage.FindShapes(Name:="DAT").Delete
x = 0 'position of text with a system data
y = 0 'position of text with a system data
Set DAT = ActiveLayer.CreateArtisticText(x, y, Date, cdrEnglishUS, , "Arial", 7, , , , cdrLeftAlignment)
DAT.Fill.UniformColor.CMYKAssign 0, 0, 0, 100
DAT.Name = "DAT"
End Sub

Вставляет дату, то что надо.
А можно ли сделать так, что после следующего открытия с сохранением, дата менялась на актуальную, а не снова запускать макрос?
 
после следующего открытия с сохранением, дата менялась на актуальную
Понимаете, в чем дело, само по себе открытие файла и его сохранение никакого кода не вызывает, соответственно, менять ничего в макете не может. Можно принудительно повесить макросы на открытие и сохранение любого файла, но вы же понимаете, чем это чревато?
 
Может мне кажется, но
дата последнего изменения файла
и
text with a system data
это немного разные вещи
так-то на отпечатке кто вам мешает включить печать информацию о файле
1558001878863.png
системная дата будет на отпечатке
1558002085700.png
 
  • Спасибо
Реакции: Skvoznyak
Может мне кажется, но
дата последнего изменения файла
и
text with a system data
это немного разные вещи
Если перед сохранением запускать макрос то системная дата и будет датой последнего сохранения. А дату последнего изменения вообще невозможно отследить, выше уже определились, вроде.
 
Файл в виде PDF файла отправляется в типографию, по этому печатать его не надо.
Если перед сохранением запускать макрос то системная дата и будет датой последнего сохранения.
Это и нужно.
Например, открыли файл, посмотрели, всё ок, закрыли, дата не меняется.
Вариант второй: Открыли, актуализировали, запустили макрос, изменили дату, сохранили, Экспорт в pdf для заказчика.
Я хотел бы избежать ручной работы, где может быть сделана ошибка.
 
Вариант второй: Открыли, актуализировали, запустили макрос, изменили дату, сохранили, Экспорт в pdf для заказчика.
Ну, собственно, это и есть приемлемый вариант.
В свою очередь он разбивается на три варианта
1) Перед сохранением нажимать специально обученную кнопку изменения даты, на которую навешен макрос. Самый простой, но ненадежный, ибо можно забыть нажать.
2) Добавить в макрос сохранение и под страхом анальной кары строго-настрого обязать дизайнера сохранять только через данную кнопку
3) Повесить макрос на сохранение любого файла вообще и как то фильтровать в нем ненужные файлы, в которые дату вставлять не надо
 
Проще повесить макрос на событие DocumentBeforeSave. Пример - Вставка даты при сохранении файла
Ничего делать не надо. Установить макрос и всё. Он сам вставит текущую дату при сохранении.
 
А чтобы он менял дату только в нужных файлах (где она есть), в макросе нужно поставить поиск
ActivePage.FindShapes(Name:="DAT")
Если нашел, то дату меняем, если нет, то ничего не делаем.
 
Какой строчкой поставить или всё равно?
 
Например так:

if ActivePage.FindShapes(Name:="DAT").Count > 0 then
' Здесь во всех шейпах с именем DAT меняем текст на новый
end if


или лучше завести переменную:

dim myDate as ShapeRange, oneDate as Shape
Set myDate = ActivePage.FindShapes(Name:="DAT")

if myDate.Count > 0 then
For Each oneDate in myDate
oneDate.Text.Story = "Здесь новая дата"
Next oneDate
end if
 
Последнее редактирование:
Комментарий модератора: @Karatau, Пользуйтесь тегом [соdе]
 
Код:
dim myDate as ShapeRange, oneDate as Shape
Set myDate = ActivePage.FindShapes(Name:="DAT")

if myDate.Count > 0 then
    For Each oneDate in myDate
        oneDate.Text.Story = CDate(Date)
    Next oneDate
end if

ух-ты!!!... Спасибо! 'dans))'
 

Не по теме:
Странно, что чудноновыйдвижок поддерживает стопицот суперэкзотических языков, кроме, внезапно, VBA :(
 
Я тоже очень удивился, не найдя в списке Бейсик... %8