| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как работать с Excel из LISP

Как работать с Excel из LISP

Ответ
Поиск в этой теме
Непрочитано 01.09.2006, 16:07
Как работать с Excel из LISP
kolobrod
 
Москва
Регистрация: 01.09.2006
Сообщений: 12

Примеры Полещука и другие похожие видел... Но всетаки хочу спросить...

Подскажите пожалуйста как следующие строчки на VBA перевести на LISP?.. Не могу разобраться с vlax-invoke-method и vlax-get-property.

Код:
[Выделить все]
    Worksheets("Sheet1").Activate
    Range("A21").Select
    Range(Selection, Selection.End(xlDown)).Select
Просмотров: 18356
 
Непрочитано 14.10.2022, 08:30
#21
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
И что вернет (vlax-get-property xlaapp 'enablevents) ?
Показывает "nil". Я подумал, что ошибка в записи, а получается, что не ко всем свойствам можно обращаться?
Смотреть дамп я не знаю как

С ходу также не получается переименовать Workbooks в Excel, может есть пример?
pad вне форума  
 
Непрочитано 14.10.2022, 09:04
#22
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Цитата:
Сообщение от pad Посмотреть сообщение
Смотреть дамп я не знаю как
(vlax-dump-object obj t)
Сейчас нет машины, где есть и ACAD, и Excel, так что помочь мало чем могу.
ЕМНИП, Workbooks - это коллекция открытых книг. Ее переименовывать - это как? Какую-то книгу переименовать, наверное, и можно - при сохранении. Но не "на лету".
Могу ошибаться
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2022, 09:43
#23
pad


 
Регистрация: 04.10.2022
Сообщений: 16


для отключения сообщений использовал (vlax-put-property xlApp 'DisplayAlerts :vlax-False)

Перерыл весь форум с темами про Excel, но так и не нашел как просто скопировать лист?
pad вне форума  
 
Непрочитано 09.11.2022, 10:35
#24
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


А у объекта листа вообще есть метод Copy (ну или что-то подобное)? И что говорит справка самого Excel по этому поводу?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2022, 11:13
#25
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Copy есть но вкладка не появдяется. VBA смотрел, там: Worksheets("Лист1").Copy Before:=Worksheets("Лист2")
Как здесь не пойму.
pad вне форума  
 
Непрочитано 09.11.2022, 11:54
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Лист копируется. Просто в другой документ.
А как выполнить копирование внутри книги - не знаю Точнее, я не понял, как передавать необязательные аргументы в метод.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.11.2022, 12:18
#27
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Тогда по другому: А можно ли копировать диапозон ячеек с одного листа на другой?
pad вне форума  
 
Непрочитано 09.11.2022, 15:39
#28
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Здесь GetExcel.lsp есть библиотечные функции по работе с excell. Может что подберешь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.12.2022, 08:25
#29
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Цитата:
Сообщение от pad Посмотреть сообщение
Copy есть но вкладка не появдяется. VBA смотрел, там: Worksheets("Лист1").Copy Before:=Worksheets("Лист2")
Как здесь не пойму.
Не стал тогда копировать лист, тупо создавал новый.
Но вот теперь надо определенный лист сделать первым в книге и вернулся опять к записи типа *.Copy только теперь *.Move.
Функция работает создавая при этом другой документ
Много перерыл примеров, но вот именно про работу с листами нет толком ни чего. Какие мысли есть?
pad вне форума  
 
Непрочитано 08.12.2022, 09:26
#30
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


т.е. из 4 поста ветки не работает?
Сергей812 вне форума  
 
Непрочитано 08.12.2022, 10:23
#31
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
т.е. из 4 поста ветки не работает?
нет.. создает новую книгу (открывает второе окно).
А может быть это из-за того, что файл не сохранен? я его создаю и работаю с ним в памяти.
pad вне форума  
 
Непрочитано 08.12.2022, 10:31
#32
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от pad Посмотреть сообщение
А может быть это из-за того, что файл не сохранен? я его создаю и работаю с ним в памяти.
сомневаюсь. Работаете же через COM с запущенным экземпляром экселя, а там ограничений на создание и копирование листов в только что созданной несохраненной книге нет.
Сергей812 вне форума  
 
Непрочитано 08.12.2022, 10:34
#33
pad


 
Регистрация: 04.10.2022
Сообщений: 16


Попробовал и с сохраненным файлом, нет не работает, не перемещает

При COPY, копирует опять же в отлельное окно...

----- добавлено через ~4 ч. -----
Цитата:
Сообщение от pad Посмотреть сообщение
Попробовал и с сохраненным файлом, нет не работает, не перемещает

При COPY, копирует опять же в отлельное окно...
Сергей812 спасибо за помощь, разобрался.
Новое окно появляется когда метод move или copy срабатывает с не указанным (или не правильно указанным) листом, просто создает другое окно и все.
Пример указтеля: (setq sht (vlax-get-property sheets 'Item 3)), при этом 'Item 3 - 3 лист книги
Команда (vlax-invoke-method new_sheet 'Move sht) ставит лист new_sheet перед 3 листом

Последний раз редактировалось pad, 08.12.2022 в 10:49.
pad вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как работать с Excel из LISP

Размещение рекламы