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

Вернуться   Форум 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
Просмотров: 49
Размер:	5.3 Кб
ID:	165063  

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


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


Может лучше на .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