Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загадка про RowHeight от Excel, самый большой глюк офиса - Гейтс 
:(
    Опции темы
790
Дата 25.5.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



smile
Есть странноватая проблема.
Дан алгоритм (подгоняет ширину вставляемого в Excel OLE-объекта под ширину ячейки, а высоту ячейки под высоту этого объекта):

excCell := UnAssigned;
excCell := excSheetMain.Range['A1:BZ500'].Find('&#TT_scheme#', lookin:=xlValues);
if((VarCompareValue(excCell,UnAssigned)=vrEqual)and(Length(strVisSchemeTTName)>0)) then
 fnExcMakeDocument:=false
else
begin
 excCell.Select;
 //вставить объект
 s := outdir+strVisSchemeTTName+'.vsd';
 excObj := excSheetMain.OLEObjects.Add(Filename:=s,
                                                  Link:=False, DisplayAsIcon :=False);
 //подогнать ширину OLE-объекта к ширине ячейки
 excObj.ShapeRange.LockAspectRatio := msoTrue;
 e1 := excCell.Width;
 excObj.ShapeRange.Width := (e1/2.8125)*49.625*2.83066;
 //подогнать высоту ячейки к высоте OLE-объекта
 e1 := excObj.ShapeRange.Height;
 excCell.RowHeight := e1;
end;


делается это в цикле при сборке N > 1 документов. При сборке первого документа все хорошо. А на втором вылезает EOleException: Нельзя установить свойство RowHeight класса Range
И к.з. что за дела! Настройки безопасности макросов не помогают. Хелп оффиса ясно пишет, что у Range есть сво-во RowHeight с возможностью изменения его значения.

Помогите, пожалуйста, разобраться! Второй день сижу с этим глюком и никак! И самое обидное, что эта фигня запарывает весь проект в 3000 строк

Добавлено @ 22:54 
Совсем забыл главное  smile 
Ошибка появляется при выполнении строки:
excCell.RowHeight := e1; 
PM MAIL   Вверх
Akina
Дата 26.5.2006, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



1) Используйте теги Код.
2) Указывайте язык, на котором программируете.
3) Поскольку (судя по синтаксису) это Дельфи - размещайте вопрос в соответствующем разделе. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Aloha
Дата 27.5.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 5
Всего: 165



790
Мне кажется, что все дело в величине параметра RowHeight
Например, вот такой код работает:
Worksheets("Лист1").Range("A1").RowHeight = 409
а такой
Worksheets("Лист1").Range("A1").RowHeight = 410
выдает ошибку "Нельзя установить свойство RowHeight класса Range" 
PM   Вверх
790
Дата 28.5.2006, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



Цитата(Aloha @  27.5.2006,  15:47 Найти цитируемый пост)
Мне кажется, что все дело в величине параметра RowHeight

К сожалению, дело не в этом.
В первом документе (когда все работает) вставляется объект бОльшей высоты и ширины, чем при зборке второго документа (когда глючит). И оба объекта вписываются в предельную высоту ячейки в Excel = 409.

P.S. 

Цитата(Akina @  26.5.2006,  08:48 Найти цитируемый пост)
3) Поскольку (судя по синтаксису) это Дельфи - размещайте вопрос в соответствующем разделе. 

Вопрос в том разделе, т.к. касается глюков Excel VBA.
 
PM MAIL   Вверх
790
Дата 30.5.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



Aloha, спасибо! Действительно дело было в высоте > 409. А я криво просто смотрел. Спасибо, проблема решена!

P.S. модератору: проьлема решена, тему можно закрывать 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.