нельзя установить свойство columnwidth класса range парус

Сообщение об ошибке, что невозможно установить свойство Width объекта Range, хотя все объекты существуют

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Что возвращает свойство Column объекта Range
В справке написано: Returns the number of the first column in the first area in the specified.

Невозможно получить свойство LocationInTable класса Range
Добрый день! Столкнулся с таким моментом: при работе кода, код ошибок не выдает, но для чего он.

‘Нельзя установить свойство HorizontalAlignment класса Range’?
Привет, пытаюсь установить выравнивание в ячейке set EApp = CreateObject(‘Excel.Application’).

Ошибка ‘Нельзя установить свойство HorizontalAlignment класса Range’
Привет, пытаюсь установить выравнивание в ячейке set EApp = CreateObject(‘Excel.Application’).

При вызове объекта Range, VBA самостоятельно меняет Range на rAnge
Всем доброго дня, у меня такой вопрос. По незнанию создал функцию rAnge(), теперь при вызове.

Ошибка: «Нельзя установить свойство FormulaArray класса Range»
Здравствуйте! Прошу помочь разобраться с такой ошибкой: «Нельзя установить свойство FormulaArray.

Диапазону ячеек B2:B20 присвоить имя «Стоимость», используя свойство Cells объекта Range
1) Диапазону ячеек B2:B20 присвоить имя «Стоимость», используя свойство Cells объекта Range. 2).

Источник

Нельзя установить свойство columnwidth класса range парус

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

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

Есть странноватая проблема.
Дан алгоритм (подгоняет ширину вставляемого в 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 строк

Советчик

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

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

.

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

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

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

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

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

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

Читайте также:  чем питается тунец в природе

Вопрос в том разделе, т.к. касается глюков Excel VBA.

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

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

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

P.S. модератору: проьлема решена, тему можно закрывать

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

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

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

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

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

Источник

Свойство ColumnWidths

Указывает ширину каждого столбца в поле со списком с несколькими столбцами.

Синтаксис

объект. ColumnWidths [= String ]

Синтаксис свойства ColumnWidths состоит из следующих частей:

Параметры

Чтобы отделить записи в столбцах, используйте точку с запятой (;) в качестве разделителя списка. В Windows это значение можно изменить, указав разделитель списка в разделе «Язык и региональные стандарты» панели управления Windows.

Любые или все параметры свойства ColumnWidths могут оставаться пустыми. Пустой параметр можно создать, указав разделитель без предшествующего ему значения.

Минимальная вычисляемая ширина столбца составляет 72 точки (2,54 см). Чтобы создать более узкий столбец, необходимо указать точную ширину.

Если не указано другое, ширина столбца измеряется в точках. Чтобы указать другую единицу измерения, добавьте ее к значению. В следующих примерах ширина столбца указывается в нескольких единицах измерения, а также приводится описание различных способов размещения трех столбцов в поле со списком шириной 10,16 см.

Setting Эффект
90;72;90 Ширина первого столбца — 90 точек (3,18 см); ширина второго столбца — 72 точки (2,54 см); ширина третьего столбца — 90 точек.
6 cm;0;6 cm Ширина первого столбца — 6 см; второй столбец скрыт; ширина третьего столбца — 6 см.
Так как третий столбец является частично видимым, отображается горизонтальная полоса прокрутки.
1.5 in;0;2.5 in Ширина первого столбца — 1,5 дюйма (3,81 см); второй столбец скрыт; ширина третьего столбца — 2,5 дюйма (6,35 см).
2 in;;2 in Ширина первого столбца — 2 дюйма (5,08 см); ширина второго столбца — 1 дюйм (2,54 см) (по умолчанию); ширина третьего столбца — 2 дюйма (5,08 см).
Так как только половина третьего столбца является видимой, отображается горизонтальная полоса прокрутки.
(Пустой) Все три столбца имеют одинаковую ширину (3,38 см).

Примечания

В поле со списком система отображает столбец, назначаемый свойством TextColumn в текстовой части элемента управления.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Microsoft Office Excel: Нельзя установить свойство HorizontalAlignment клас

(1)
🙂
буквы это конкретика
а я про теорию.
вот
_ОкноЕхс.Windows(_ВыбФ).Activate();
.
_ОкноЕхс.Range(Диапп).Select();
_ОкноЕхс.Selection.Columns.AutoFit();
_ОкноЕхс.Selection.HorizontalAlignment=1;

а аутофит отрабатывает..

эксель же принципиально не связывает range и horizontal alignment
..
хотя я брал код из работающего куска
но там диапазон = строка.
вот и думаю

Процедура ДеИнициализацияЭксель()
Если ПустоеЗначение(лЭксель) = 0 Тогда
лЭксель.ActiveWorkbook.Save();
лЭксель.WorkBooks.Close();
лЭксель.Quit();
лЭксель = 0;
КонецЕсли;
КонецПроцедуры

Функция ИнициализацияЭксель()
Рез = 0;
Если ПустоеЗначение(лЭксель) = 1 Тогда
Если СокрЛП(ПутьКФайлу) <> «» Тогда
Попытка
лЭксель = СоздатьОбъект(«Excel.Application»);
Исключение
Сообщить(ОписаниеОшибки(),»!»);
Сообщить(«Возможно, MS Excel не установлен на этом компьютере.»);
Возврат 0 ;
КонецПопытки;
Попытка
лЭксель.WorkBooks.Open(ПутьКФайлу);
Исключение
Предупреждение(«По указанному пути: «»» + ПутьКФайлу + «»» ничего нет. «);
лЭксель.Quit();
лЭксель = 0;
КонецПопытки;
Рез = 1;
КонецЕсли;
Иначе
Рез = 1;
КонецЕсли;
Возврат Рез;
КонецФункции

Процедура ВыбратьФайл()
Перем Имя, Каталог;
Если ФС.ВыбратьФайл(0, Имя, Каталог, «Путь к файлу Excel»,
«Файлы XLS (*.xls)|*.xls»,»*.xls») <> 1
Тогда
Возврат;
КонецЕсли;
ПутьКФайлу = СокрЛП(Каталог) + СокрЛП(Имя);
КонецПроцедуры// ВыбратьФайл()

Процедура Сформировать()
ИнициализацияЭксель();
Попытка
лТекЛист = лЭксель.WorkSheets(«Лист1»);
лТекЛист.Activate();
лТекЛист.Range(лТекЛист.Cells(1, 1), лТекЛист.Cells(10, 1)).Select();
ЗапускМакроса();
Исключение
ДеинициализацияЭксель();
Возврат;
КонецПопытки;
ДеинициализацияЭксель();
КонецПроцедуры

Вот так работает. Свойство Selection желательно не использовать, можешь захватить другие объекты кроме ячеек.

(10) вообщето код не очень, и кстати если использовать мсскриптконтрол, то совсем не обязательно делать саб или функ.
За активе вообще по рукам всем тут нада ))
(0)

Да 🙂 так и есть. Только во всех источниках которые перерыл в инете везде «функ», как было выше сказано. Перепроверять не приходилось.

🙂
(21+)
..передается большая таблица значений Т,
ее по кусочкам пишут из mxl в xls-ы,
их сшивают в 1 файл (_ВыбФ), а потом надо просто форматировать.

Строк=Т.КоличествоСтрок()+1;
Колон=Т.КоличествоКолонок();
_ОкноЕхс.Windows(_ВыбФ).Activate();
Лист=_ОкноЕхс.Windows(_ВыбФ).ActiveSheet;
Для й=1 По Колон Цикл
Диапп0=_ОкноЕхс.Range(Лист.Cells(1,й),Лист.Cells(Строк,й));
Диапп0.Columns.AutoFit();
КонецЦикла

вот этот кусок работает.
а ни HorizontalAlignment
ни NumberFormatLocal
ни NumberFormat
не работает.
или жалуется как в названии темы
или просто пишет «:» в поле описания ошибки..

_ОкноЕхс=СоздатьОбъект(«Excel.Application»);
_ИмяФФ =_ВыбКат+_ВыбФ;
_ОкноЕхс.Visible=0;
_ОкноЕхс.DisplayAlerts=0;
_ОкноЕхс.DisplayAlerts=1;
_ОкноЕхс.Workbooks.Open(_маска+»1.xls»);
_ОкноЕхс.DisplayAlerts=0;
_ОкноЕхс.ActiveWorkbook.SaveAs(_ИмяФФ,-4143);
_ОкноЕхс.DisplayAlerts=1;
Попытка
_ОкноЕхс.Windows(_ВыбФ).Visible=0;
_ОкноЕхс.Windows(_ВыбФ).DisplayWorkbookTabs = 1;
_ОкноЕхс.Windows(_ВыбФ).TabRatio = 0.2;
Исключение
КонецПопытки;
для _й=2 по _сч цикл
состояние(«Приклеиваю временный файл № «+_й);
_ОкноЕхс.Workbooks.Open(_маска+_й+».xls»);
_ОкноЕхс.Windows(_маскаФайл+_й+».xls»).ActiveSheet.Range(«A1″,»IV»+_ОкноЕхс.Windows(_маскаФайл+_й+».xls»).ActiveSheet.UsedRange.Rows.count).Copy(_ОкноЕхс.Windows(_ВыбФ).ActiveSheet.Range(«A»+сокрлп(_ОкноЕхс.Windows(_ВыбФ).ActiveSheet.UsedRange.Rows.Count+1)));
_ОкноЕхс.Windows(_маскаФайл+_й+».xls»).close(-1);
конеццикла;

Делай через лист всеже

Источник

forum.clarionlife.net

Место общения программистов, форум разработчиков БД на Clarion

[OLE] [Excel] Установка формата ячейки

Модератор: Дед Пахом

Сообщение Гость » 31 Март 2004, 8:44

(С55EE(G); WinXP,98; ExcelXP,2000)

OLE Automation Error
«Нельзя установить свойство NumberFormat класса Range»

==================================================
3. Я хочу записать в ячейку дробное число
?OLE <'Cells(' & i & ',' & j+1 & ').Value'>= YVol[m#,j]
как обеспечить распознавание числа ^^^^^^^^
как дробного числа с DecimalSeparator = «.» и автоматического приведение его к DecimalSeparator, установленному в системе.
Т.е. чтобы из Clarion в Excel число записывалось именно как число и именно с тем DecimalSeparator, который установлен в системе

Вариант (ExcelXP)
?OLE <'Application.DecimalSeparator'>= ‘».»‘
?OLE <'Application.UseSystemSeparators'>= FALSE
Не работает под Excel2000 (ну нет там таких свойств)
Пробую обойти это так:

но здесь проблема с NumberFormat (см. Выше) (оставить в том виде что есть (текстовом) нельзя, так как на его основе не строятся ChartObjects)

Посоветуйте, плиз: как надо правильно записывать в ячейки Excel дробные числа независимо от настроек системы

Сообщение Гость » 01 Апрель 2004, 8:36

ГОСПОДА КЛАРИОНИСТЫ!
Если не поможете, начну о вас плохо думать.

Раз никто не отвечает, то либо лениво писать, либо некогда. Зачем сразу «плохо думать»

От себя: Конкретно ручками писать работу с Excel через OLE не писал.
Сразу стал писать используя OfficeTemplate. Там это без проблем, например:

Сообщение Гость » 01 Апрель 2004, 11:08

Я при выводе дробного числа в Excel делаю так

Сообщение Гость » 01 Апрель 2004, 11:36

Да при чем тут это?
Мне не нужно менять установки в системе.

Мне нужно только
1. Правильно вывести число с десятичной точкой в Excel
2. Задать числовой формат ячейки в Excel

Я не понял, что следующий код не работает?:

Если правильно понял то проблема десятичной точки тогда
Format(FSN:SNMBR,@n5`2)
Меняет точку на запятую

Liudvikas Jagucanskis
Написал: ClaList(2)

Сообщение Гость » 01 Апрель 2004, 14:31

В случае, когда в качестве системного десятичного разделителя установлена запятая.
НЕ работает вот что

?OLE <'Selection.NumberFormat'>= ‘»0.00″‘
выдает ошибку:
OLE Automation Error
«Нельзя установить свойство NumberFormat класса Range»

и наоборот: использовать «0,00», когда в системе разделителем является точка, тоже нельзя. Ошибки при работе нет, но вот данные в Excel искажаются.

у Вас в настройках системы какой десятичный разделитель установлен?
(и еще если можно: какой Excel, какая Windows?)

Я тут покопался малость и вот что выяснил:

Ошибки при работе нет, но вот данные в Excel искажаются.

Тогда почему в коде VBA (в макросе Excel) стоит именно «0.00».

Подскажите: как определить какой символ используется в качестве десятичного разделителя? Я так понимаю это через API делать надо?
Приведите пример вызова функции API в Clarion.


Best regards,
Ivan
Написал: ClaList(2)

Сообщение Гость » 01 Апрель 2004, 18:44

Ну почему бы самому не написать 1 раз функцию, чтоб потом ее пользовать в каждом проекте?

format_str = ‘»0’ & sys:get_decimal_divider & ’00″‘


Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

дык я с удовольствием
знал бы я как к ней подступиться

это что за выражение.
это и имеется ввиду под функцией?
а почему «sys:» вначале?

Ну что ребята, так сложно мс-дэ-эну почитать?

где конкретно тебя должно интересовать 4 поле сверху

О-о-о, сенкс, об этой функции не знал!


Best regards,
Maxim Yemelyanov
Написал: ClaList(2)

Источник

Читайте также:  Как называется хворост на кефире
Портал про кино и шоу-биз