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

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

LISP. Как изменить толщину определенной границы ячейки Excel?

Ответ
Поиск в этой теме
Непрочитано 10.02.2016, 14:15 #1
LISP. Как изменить толщину определенной границы ячейки Excel?
ProPeller
 
Пастух
 
Питер
Регистрация: 16.07.2012
Сообщений: 318

Столкнулся с проблемой при форматировани таблицы Excel средствами VLisp'а.
Вот чисто условный пример для того, чтобы задать толстые границы для ячеек небольшого диапазона
Код:
[Выделить все]
 
(vlax-put-property
 (vlax-get-property
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
  'Borders
 )
 'Weight
 -4138
)
Проблема заключается в том, что внутренние границы диапазона тоже становятся утолщёнными. В справке MDSN сказано, что можно задавать толщину определенным границам, а именно
Цитата:
Use Borders(index), where index identifies the border, to return a single Border object. The following example sets the color of the bottom border of cells A1:G1.
Index can be one of the following XlBordersIndex constants: xlDiagonalDown, xlDiagonalUp, xlEdgeBottom, xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlInsideHorizontal, or xlInsideVertical.
Т.е. как изменить это свойство на VBA, мне понятно, а вот как изменить это свойство при помощи VLisp, я пока не допёр. Может кто сталкивался с подобным и знает как выйти из положения?

Миниатюры
Нажмите на изображение для увеличения
Название: 1.png
Просмотров: 48
Размер:	5.3 Кб
ID:	165063  

__________________
Автоматизация должна быть автоматической.
Просмотров: 6313
 
Непрочитано 10.02.2016, 14:33
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


Может лучше на .NET перейти?
Цитата:
xlDiagonalDown = 5
xlDiagonalUp = 6
xlEdgeLeft = 7
xlEdgeTop = 8
xlEdgeBottom = 9
xlEdgeRight = 10
xlInsideVertical = 11
xlInsideHorizontal = 12
Код:
[Выделить все]
 (vlax-put-property
 (vlax-get-property
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
  'Borders
 6 ;xlDiagonalUp
 )
 'Weight
 -4138
)
trir вне форума  
 
Автор темы   Непрочитано 10.02.2016, 14:44
#3
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от trir Посмотреть сообщение
Может лучше на .NET перейти?
Я уже вот вот ))

Цитата:
Код:
[Выделить все]
 (vlax-put-property
 (vlax-get-property
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
  'Borders
 6 ;xlDiagonalUp
 )
 'Weight
 -4138
)
Так я уже пробовал. Не получается. Пишет мол, слишком много фактических параметров.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 10.02.2016, 15:29
#4
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


А что выдаст вот такое? :
Код:
[Выделить все]
 
(vlax-dump-object
(vlax-get-property
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
  'Borders
 )
T
)
И вот такое:
Код:
[Выделить все]
 (vlax-dump-object
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
T
)
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 10.02.2016, 15:34
#5
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Do$ Посмотреть сообщение
А что выдаст вот такое? :
Код:
[Выделить все]
 
(vlax-dump-object
(vlax-get-property
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
  'Borders
 )
T
)
И вот такое:
Код:
[Выделить все]
 (vlax-dump-object
  (vlax-get-property
   Sheet
   'Range
   "B2:D4"
  )
T
)
Дамп в данном случае не поможет, потому как к объекту Borders не применяются методы, соответственно и количества возможных аргументов мы оттуда не узнаем. У него есть только свойства, а Borders в свою очередь является свойством Range и возвращаемым значением является VLA указатель.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 10.02.2016, 15:49
1 | #6
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Хм, а Borders случаем не является коллекцией, по которой можно пройти с помощью vlax-for или получить элемент с помощью vla-item?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 10.02.2016, 15:53
#7
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Do$ Посмотреть сообщение
Хм, а Borders случаем не является коллекцией, по которой можно пройти с помощью vlax-for или получить элемент с помощью vla-item?
Ай красавчик! Спасибо тебе добрый человек!
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 10.02.2016, 16:06
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™



Все получилось?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 10.02.2016, 16:25
#9
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Do$ Посмотреть сообщение

Все получилось?
Еще бы! Я просто зациклился на другом подходе и совсем упустил из виду, что это коллекция. Только в связи с особенностями Lisp'a придется делать 4 диапазона ячеек описывающих границы и у каждого утолщать определенную сторону
В общем, как было предложено выше, вскоре я перейду на .Net
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 16.02.2016, 20:34
#10
vasiliu33

Автомеханик
 
Регистрация: 16.02.2016
Купянск
Сообщений: 6


Цитата:
Сообщение от Do$ Посмотреть сообщение
Хм, а Borders случаем не является коллекцией, по которой можно пройти с помощью vlax-for или получить элемент с помощью vla-item?
Все верно. Не преусердствуйте
vasiliu33 вне форума  
 
Непрочитано 16.03.2021, 19:18
#11
tujn08


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


У меня не выходит.
Растолкуйте пожалуйста на пальцах, начиная с vlax-for или получить элемент с помощью vla-item на выше предложенном примере .

Проблема в толщине - тонкие все ок, а толстые ни как.

Последний раз редактировалось tujn08, 16.03.2021 в 23:07.
tujn08 вне форума  
 
Непрочитано 17.03.2021, 19:15
#12
Alex.gomel


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


https://forums.autodesk.com/t5/visua...l/td-p/1362657
Alex.gomel вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как изменить толщину определенной границы ячейки Excel?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Создание поля (field), ссылающегося на текстовое значение ячейки таблицы. skkkk Готовые программы 141 24.11.2023 15:49
LISP. Excel-blocking - экспорт/импорт содержимого аттрибутов блоков в Excel kakt00z Готовые программы 23 10.03.2022 00:54
AutoCAD: как изменить форму и/или толщину курсора vau AutoCAD 13 20.10.2011 18:16
как скопировать ячейки excel в чертеж AutuCAD vestes AutoCAD 5 14.06.2011 00:37