Автозаполнение заголовка в Illustrator

Тема в разделе "Visual Basic", создана пользователем -, 26 ноя 2009.

  1. Гость

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

    <!--shcode--><pre><code class='vb'>Option Explicit
    Private Sub Command1_Click()

    Dim myApp As New Illustrator.Application

    Dim myFileSystemObject As New FileSystemObject
    Dim myFileName, myPath, myFile, myDate, myRevised, myEditor
    If myApp.Documents.Count > 0 Then
    myFileName = myApp.Documents(1).Name
    myPath = myApp.Documents(1).Path

    Set myFile = myFileSystemObject.GetFile(myPath)
    myDate = MonthName(Month(myFile.DateCreated))
    myDate = myDate & " " & Day(myFile.DateCreated)
    myDate = myDate & ", " & Year(myFile.DateCreated)
    myRevised = MonthName(Month(myFile.DateLastModified))
    myRevised = myRevised & " " & Day(myFile.DateLastModified)
    myRevised = myRevised & ", " & Year(myFile.DateLastModified)

    myEditor = GetUserName()

    On Error Resume Next
    myApp.Documents(1).TextArtItems("titleblock-file").Contents = myFile
    myApp.Documents(1).TextArtItems("titleblock-path").Contents = myPath
    myApp.Documents(1).TextArtItems("titleblock-date").Contents = myDate
    myApp.Documents(1).TextArtItems("titleblock-revised").Contents = myRevised
    myApp.Documents(1).TextArtItems("titleblock-editor").Contents = myEditor
    End If
    End Sub[/CODE]

    Возникает, видимо, проблема с библиотекой. Выскакивает ошибка 53 - файл не найдет.
    А также при кампиляции можно увидеть, что Illustrator.Application = <object variable or with block variable not set>

    Помогите, пожалуйста.
    <table valign="top" style='margin:0;width:100%;border:1px dashed red;'>[tr]<td align='middle' bgcolor='#ff6060' valign='top' width='1%'>
    <FONT color='#ffffff' size='+3'> ! </font>
    </td><td align="midle" valign='top' style='background:#fff;'>Используйте теги оформления кода.</td>[/tr]</table>
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    не знаю насчет Illustrator, что там с библиотеками - если подключили, должен объект создаваться в процессе выполнения и все нормально найтись.
    Eсли проблема в коде, посмотрите хотя бы значение myPath в процессе выполнения - может, неправильно работает, если файл не сохранен?
    (может, добавьте на будущее обработчик ошибок с указанием строки ошибки :KillMe: ).
     
  3. Гость

    Вот в том-то и дело, что в myFileName, myPath он все заносит.
    на Set myFile = myFileSysObject.GetFile(myPath) выдает ошибку, что файл не найден.

    А все, что связано с myApp, myFileSysObject игнорит. :KillMe:
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А так?
    Код (Text):
    Dim myFileSystemObject As New Scripting.FileSystemObject
    или
    Код (Text):
    Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
     
  5. Гость

    А счас ничего не изменилось. кстати, по какой-то причине он не может распознать идентификатор FileSystemObject
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А посмотрите внимательно на значение myPath. может, путь относительный, не там ищет?
     
  7. Гость

    myPath = "E:\temp\". Здесь же лежит файл illustrator.
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    э, а где имя файла? Может так: myPath + myFileName ?
    не поняла, по коду же myPath у Вас получается из myApp. Т.е. myApp уже должен создаваться нормально...
    Мне кажется, что и myFileSysObject создается, но просто не находит в нужном месте файл.


    Добавлено: или не +, а &: myFileSysObject.GetFile(myPath & myFileName)
     
  9. Tanya

    Tanya Гость

    Точно. Должна найтись, если подключена. Если не подключена, но зарегистрирована на компе, то нужно использовать для создания экземпляра приложения - CreateObject() или, для получения экземпляра открытого приложения GetObject(). Если библиотека не существует / не зарегистрирована - будет ошибка.

    Дальше - мысли вслух))) Обычно, в строке такого вида
    Dim myApp As New Illustrator.Application

    всего лишь создается пустой экземпляр приложения, т.е. без документов. Для того чтобы пользователь затем мог работать с документами с ним, приложение нужно сделать видимым.

    myApp.Visible = True

    Соответственно после создания myApp.Documents.Count = 0. Значит код, в принципе, не сможет никогда выполниться.
    Без документов, при помощи new создаются экземпляры Excel, Word, Photoshop, Corel.
    Но может в твоем случае Illustrator создается с документом? Тогда все мои мысли вслух в топку ))
     
  10. Гость

    :ya_lamo:
    Да, действительно, нужно прописать и имя к пути. Так файл находит. Спасибо большое.

    Счас попробую довести до ума, чтоб в иллюстратор всю инфу заносило.

    Спасибо.

    Не пропадайте :rolleyes:



    Добавлено: А если в иллюстраторе каждый слой имеет имя, и в каждом слое по одному текстовому блоку, куда он должен выводить инфу (переменные myPath, myFile),
    то как правильно обратиться к этому текстовому блоку?

    Неправильно: myApp.Documents(1).Layers("titleblock-file").TextArtItems(1).Contents = myFile

    Добавлено: Вопрос снят )))
     
  11. Гость

    :)
    Хочу добиться того, чтоб данный скрипт работал не только в VB6 и Illustrator 10, но и в Illustrator CS2 и Visual Studio 2005.]
    В связи с этим есть несколько вопросов:
    1. Существуют ли функции получения даты и времени последнего изменения файла и создания файла? Функция FileDateTime - это функция последнего обращения к файлу, верно?
    2. В данной задаче корректно будет использовать вместо FileSystemObject System.Object() или FileIO.FileSystem()?

    Буду благодарна за помощь
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Функций, кроме FileDateTime, не знаю, есть методы для получения нужной инфы.
    А FileDateTime - вроде выдает дату и время последнего изменения файла, а не обращения к нему (если файл не изменялся, то эта дата будет датой создания).
     
Загрузка...
Похожие Темы - Автозаполнение заголовка Illustrator
  1. hiton
    Ответов:
    0
    Просмотров:
    1.446
  2. TAPAKAHATOP
    Ответов:
    12
    Просмотров:
    2.754
  3. Alexis
    Ответов:
    1
    Просмотров:
    2.283
  4. Спартак
    Ответов:
    2
    Просмотров:
    1.805
  5. ksyun
    Ответов:
    5
    Просмотров:
    3.008

Поделиться этой страницей