Для чего это нужно: Как и в любой большой программе с собственным форматом хранения данных, в файлах CorelDRAW иногда накапливается различная ненужная информация - мусор. Например, цветовые стили (хотя иногда они полезны). Это сказывается на вес файла и на время работы таких операций с ним, как открыть, копировать, вставить. В CorelDRAW Х4, со вторым сервис паком, решили проблему торможения при работе с файлами в которых много цветовых стилей. Однако сами стили никуда из файла не исчезают, и порой добавляют к файлам, в несколько сотен килобайт, несколько мегабайт.

Лечится это пересохранением в формат CMX. Благодаря простому макросу reSaveCMX, это делается нажатием одной кнопки.

Sub reSaveCMX()
  If ActiveDocument Is Nothing Then Beep: Exit Sub
  Dim expopt As StructExportOptions, expflt As ExportFilter, d As Document, s$
  Set expopt = CreateStructExportOptions
  Set d = ActiveDocument
  s = d.FilePath & d.Name & ".cmx"
  Set expflt = ActiveDocument.ExportEx(s, cdrCMX6, cdrAllPages, expopt)
  expflt.finish
  d.Close
  Set d = OpenDocument(s)
  Dim SaveOptions As StructSaveAsOptions
  Set SaveOptions = CreateStructSaveAsOptions
  With SaveOptions
    .EmbedVBAProject = False
    .Filter = cdrCDR
    .IncludeCMXData = False
    .Range = cdrAllPages
    .EmbedICCProfile = False
    .Version = cdrCurrentVersion
  End With
  d.SaveAs d.FilePath & d.Name & ".cdr", SaveOptions
  VBA.FileSystem.Kill s
End Sub

Автор: Sancho

Комментарии

Аватар пользователя pablopablopablo

Всё бы хорошо, только при пересохранении многостраничного документа остаётся лишь 1-ая страница, а ее размер задается как А4, независимо от того, каким он был до этого.

В целом, хорошая идея, но требует доработки. Тем не менее автору моё почтение

Аватар пользователя sassisa

а вообще было бы прикольно доработать таким образом
файл сохраняется в смх формат, а потом оттуда пересохраняется в сдр формат, с последующим удалением смх
правда, что делать с многостраничным документом?

Аватар пользователя Sancho

так так и делает :) просто CMK видимо не поддерживает многостраничность. Поделать то конечно можно, и очень даже просто. Будет время, доработаю :)

Аватар пользователя lilWADE

незнаю почему, но у меня получается сделать .CMX многостаничным... когда я пересохраняю.. .CDR в .CMХ в ручную... после чего я закрываю открытый файл.. затем открываю File>Open... (ctrl+o) файл открывается многостранично!.. размер листа правда изменяется.. поменять не сложно... псоле этого я снова сохраняю.. в .CDR.... все работает отлично... файл летать начинает... :)

Аватар пользователя lilWADE

P.S. возможно ли это сделать одним нажатием??