Взаимодействе Indesign, Excel с помощью

  • Автор темы Автор темы gauss_gauss
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

gauss_gauss

Участник
Топикстартер
Сообщения
39
Реакции
0
Есть ли тут спецы по VBA? Требуется помощь.
Задача следующая:
1. Требуется выгрузить список eps используемых публикации в excel
2. Добавить в этот же excel измененый список eps
3. Сравнить два списка и удалить повторения (если есть в первом столбе и есть во втором, то опустошаем обе ячейки)
4. В первом столбце остануться имена eps'ок. Список загружаем обратно в Индизайн
5. Читаем из файла и удаляем eps.

вся проблема крутится во взаимодействии с excel
вот кусок кода, который должен запустить Excel и открыть, и отсортировать список
Код:
//вызываем эксель
Set EXCELAPP = CreateObject("excel.application")
EXCELAPP.Visible = True
EXCELAPP.Workbooks.OpenText("C:\Documents and Settings\of.print\Рабочий стол\нда\11.txt")
//НИЖЕ СТРОЧКА ГОВОРИТ О ТОМ ЧТО ПРЕДПОЛАГАЕТСЯ НАЛИЧИЕ ИНСТРУКЦИИ
EXCELAPP.Workbooks.OpenText Filename:= _
        "C:\Documents and Settings\of.print\Рабочий стол\нда\112.txt", Origin:=1251, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True
    EXCELAPP.Columns("A:A").Select
    EXCELAPP.Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    EXCELAPP.Cells.Replace What:=".eps", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Const intCol = 1
    Const intRow = 1
    Dim i%
    For i = intRow + 1 To EXCELAPP.Cells(intRow, intCol).CurrentRegion.Rows.Count + intRow
        If EXCELAPP.Cells(i, intCol) = "" Then Exit For
        If EXCELAPP.Cells(i, intCol) = EXCELAPP.Cells(i, intCol).Offset(-1, 0) Then _
            EXCELAPP.Rows(i).Delete shift:=xlUp: i = i - 1
    Next
Но строчка EXCELAPP.Workbooks.OpenText говорит о том, что "предполагается наличие устройства"
Загнать все параметры в круглые скобки, то он говорит о том что нет круглой скобки ")"
Код:
EXCELAPP.Workbooks.OpenText (Filename:="C:\Documents and Settings\of.print\Рабочий стол\нда\112.txt", Origin:=1251,       StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False , Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True)

Я подумал, почему бы тогда этот кусман кода не запускать из самого открытого экселя. Но почему-то пишет, что в файле не найден макрос
Код:
//вызываем эксель
Set EXCELAPP = CreateObject("excel.application")
EXCELAPP.Visible = True
EXCELAPP.Workbooks.OpenText("C:\Documents and Settings\of.print\Рабочий стол\нда\11.txt")
//макрос не находит
EXCELAPP.Run "C:\Documents and Settings\of.print\Рабочий стол\нда\макросы\обработка_рекламы.xls!обработка_рекламы"
И вообще интересно, что при открытии через vba экселя макросов вообще никаких не видно, даже личной книги макроса экселя.

Помогите пожалуйста, либо макрос запустить, либо функцию заставить работать! Заранее благодарен :)
 
Ответ: Взаимодействе Indesign, Excel с помощью

Зачем вообще здесь Excel? всё это можно не выходя из InDesign сделать.
 
Ответ: Взаимодействе Indesign, Excel с помощью

Для взаимодействия с экселом лучше использовать окошко immendiate из ворда или акцесса, там все команды можно попробовать и содержимое переменных просмотреть.
Хотя эксель конечно лишний для этого.
 
Ответ: Взаимодействе Indesign, Excel с помощью

А что разъяснять? Если
вся проблема крутится во взаимодействии с excel
значит, весь остальной алгоритм для Вас не проблема. :)
Осталось в Вашем перечне действий слово "exel" заменить на "новый документ Индизайна", а там хоть таблицей, хоть фреймами получайте два списка и сравнивайте.
 
Статус
Закрыто для дальнейших ответов.