- Сообщения
- 39
- Реакции
- 0
Есть ли тут спецы по VBA? Требуется помощь.
Задача следующая:
1. Требуется выгрузить список eps используемых публикации в excel
2. Добавить в этот же excel измененый список eps
3. Сравнить два списка и удалить повторения (если есть в первом столбе и есть во втором, то опустошаем обе ячейки)
4. В первом столбце остануться имена eps'ок. Список загружаем обратно в Индизайн
5. Читаем из файла и удаляем eps.
вся проблема крутится во взаимодействии с excel
вот кусок кода, который должен запустить Excel и открыть, и отсортировать список
Но строчка EXCELAPP.Workbooks.OpenText говорит о том, что "предполагается наличие устройства"
Загнать все параметры в круглые скобки, то он говорит о том что нет круглой скобки ")"
Я подумал, почему бы тогда этот кусман кода не запускать из самого открытого экселя. Но почему-то пишет, что в файле не найден макрос
И вообще интересно, что при открытии через 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 (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!обработка_рекламы"
Помогите пожалуйста, либо макрос запустить, либо функцию заставить работать! Заранее благодарен