Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобратся

79K
02 февраля 2012 года
Exile1985
3 / / 02.02.2012
Здравствуйте.

Есть макрос для Corel x4 который при запуске берет имя текущего открытого файла и ищет файл с таким же именем на сетевом диске, если находит, открывает и копирует все содержимое это файла в ранее открытый файл, после чего удаляет файл с сетевого диска.

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

код скрипта:

Код:
Public Sub LoricImport()  'экспорт изображения из соответствующего файла
Dim LoricFileName As String
Dim LoricDocument As CorelDRAW.Document
Dim CurrDocument As CorelDRAW.Document
Dim LoricLayer As CorelDRAW.Layer
Dim PosY As Double
Dim PosX As Double


LoricFileName = Dir("\\путь до сетевой папки" & ActiveDocument.FileName)
If LoricFileName = "" Then
    MsgBox "Файл с соответствующим номером не найден"
    Exit Sub
End If
LoricFileName = "\\путь до сетевой папки" & ActiveDocument.FileName
Set CurrDocument = ActiveDocument
'удалить все направляющие из CurrDocument
CurrDocument.MasterPage.GuidesLayer.Shapes.All.Delete

PosY = CurrDocument.ActiveLayer.Shapes.All.PositionY - CurrDocument.ActiveLayer.Shapes.All.SizeHeight - 1
PosX = CurrDocument.ActiveLayer.Shapes.All.PositionX

Set LoricDocument = Application.OpenDocument(LoricFileName)
'удалить все направляющие из LoricDocument
LoricDocument.ClearSelection
CurrDocument.ClearSelection
LoricDocument.MasterPage.GuidesLayer.Shapes.All.Delete
Clipboard.Clear
'For Each LoricLayer In LoricDocument.ActivePage.Layers
'    'MsgBox LoricLayer.Name
'    LoricDocument.ActivePage.Shapes.All.AddToSelection
'Next LoricLayer
LoricDocument.ActivePage.Shapes.All.CreateSelection
'LoricDocument.Selection.Copy
ActiveSelection.Copy
CurrDocument.ActiveLayer.Paste
LoricDocument.Save
LoricDocument.Close
CurrDocument.Activate
Application.ActiveSelection.SetPosition PosX, PosY
CurrDocument.Save
On Error GoTo Err_LoricImport
    Kill LoricFileName

   
Exit_LoricImport:
    Exit Sub

Err_LoricImport:
    MsgBox Err.Description
    Resume Exit_LoricImport
   
End Sub
277
02 февраля 2012 года
arrjj
1.7K / / 26.01.2011
Цитата:

Есть макрос для Corel x4 который при запуске берет имя текущего открытого файла и ищет файл с таким же именем на сетевом диске, если находит, открывает и копирует все содержимое это файла в ранее открытый файл, после чего удаляет файл с сетевого диска.


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

79K
02 февраля 2012 года
Exile1985
3 / / 02.02.2012
Цитата: arrjj
А почему просто не копирует _файл_ (а не _содержимое_) себе и не открывает его?


Так сделано специально, в причины углубляться не буду, просто первый файл заменять нельзя, по этому картинка скопированная с сетевого диска, вставляется строго под уже имеющейся.

Цитата: arrjj

Кроме того шрифты имхо не находятся в файле кореловском, а только его название, что как бы делает поведение корела вполне оправданным - нет шрифта , заменяем его на первый нашедшийся.



Я думаю это логично т.к. если бы шрифт находился в самом файле, корел на отсутствие шрифта не ругался.

Странно что при открытии файла руками (кликая мышкой или через "Открыть") корел сообщает об отсутствии шрифта и предлагает заменить его, открывая же через скрипт никаких уведомлений нет.

Одно решение проблемы я нашел, решение состоит в открытии файла не через Application.OpenDocument(FileName), а через ShellExecute, в таком случае корел ругается на отсутствие шрифта.
Далее, сразу после открытия файла сравниваем директории первого открытого файла (заранее сохранив в переменной) и текущего открытого и если они не одинаковые тогда уже копируем и тд, если нет прерываем скрипт.

Но такое решение не правильное, в идеале хотелось бы чтобы, автоматически шрифт не заменился, файл не открывался, а ошибку отсутствия шрифта выдавать сообщение через MsgBox.
Либо, как еще один вариант,чтобы этот злосчастное предложения замены шрифта появлялось, а решение о замене или отмене отлавливать не так как я (даже не знаю как назвать этот "способ"), а нормально, ведь должна быть какая то возможность.

79K
03 февраля 2012 года
Exile1985
3 / / 02.02.2012
а как выдернуть названия используемых шрифтов в файле кореле, может кто подсказать?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог