Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 16:47   #1
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию Как программно изменить CheckBox в файле Excel

Помогите советом.
Весь инет облазил. Не могу найти ответ.

Выгружаю данные из Delphi в таблицу Excel:

Код:
 ExcelApp := CreateOleObject('Excel.Application');
 Workbook := ExcelApp.WorkBooks.Open('aaa.xls',False);
 // Запись значения в ячейку
 ExcelApp.Range['L9','L9'].Value:=NomStr.Text;
Как менять CheckBox1 (который в Excel)?
По интуиции пробовал:
ExcelApp.CheckBox1.value:=true;
ExcelApp.CheckBox1.Enabled:=true;

Но не работает.

Прочитал всю книгу Корнякова "Программирование документов и приложений MS Office в Delphi".
Разобрано все, кроме программирования "элементов управления".

Последний раз редактировалось Sharmon; 23.06.2011 в 14:05.
Sharmon вне форума Ответить с цитированием
Старый 22.06.2011, 17:37   #2
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Код:
var
F:OleVariant;

F:=Excel.ActiveWorkbook.Sheets.Item[1].Shapes.Jtem('Флажок 1').OLEFormat.Object;
F.Value:=True;

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 22.06.2011, 18:01   #3
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию

Что-то не работает

Пишу так (применительно к моему коду):

Код:
 F:=ExcelApp.Workbook.Sheets.Item[1].Shapes.Item 'CheckBox9').OLEFormat.Object;
 F.Value:=True;
Вылетает с ошибкой.

Последний раз редактировалось Sharmon; 23.06.2011 в 14:05.
Sharmon вне форума Ответить с цитированием
Старый 22.06.2011, 18:05   #4
Leo08
Delphi master
Пользователь
 
Аватар для Leo08
 
Регистрация: 28.05.2011
Сообщений: 96
По умолчанию

Вроде в Excel CheckBox так и называется "флажок", а не как в Delphi (Checkbox)
БЯЯЯГГАААААА
Leo08 вне форума Ответить с цитированием
Старый 22.06.2011, 18:09   #5
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию

Я не разобрался. В экселе 2 типа флажков. На панели инструментов "Формы" и на панели "Элементы управления".
У меня в документе используются из "Элементы управления".
Соответственно при наведении на него курсора, в поле где адрес ячейки высвечивается "CheckBox1", "CheckBox2" и т.д.
Подозреваю, что код, приведенный во втором посте применителен для флажков на панели "Формы".

Может у кого есть рабочий пример, менящий флажок из делфи в таблице Excel?
Был бы очень признателен artsoft1(собака)mail.ru

Последний раз редактировалось Sharmon; 22.06.2011 в 18:14.
Sharmon вне форума Ответить с цитированием
Старый 22.06.2011, 20:46   #6
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

http://www.djpate.freeserve.co.uk/AutoExcl.htm

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 22.06.2011, 22:32   #7
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию

Там описано все то, что я и так уже знаю
Sharmon вне форума Ответить с цитированием
Старый 23.06.2011, 00:43   #8
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Цитата:
Сообщение от Sharmon Посмотреть сообщение
Вылетает с ошибкой.
Какая ошибка ?

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 23.06.2011, 12:36   #9
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию

Project prog.exe raised exception calss OleError with message 'Method Sheets' not supported by automation object
Sharmon вне форума Ответить с цитированием
Старый 23.06.2011, 14:02   #10
Sharmon
 
Регистрация: 22.06.2011
Сообщений: 6
По умолчанию

Подсказали следующий код:

Код:
var 
    exSheet, Chb, Obj: Variant;
    Cnt: Integer;
begin
 ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.Visible := True;
 Workbook := ExcelApp.WorkBooks.Open('doc.xls');
 ExSheet:= Workbook.WorkSheets[1];
 
 Chb := Unassigned;
 Cnt := ExSheet.OleObjects.Count;

 for i:=1 to Cnt do begin
    Obj := exSheet.OleObjects[i];
    if Obj.Name = 'CheckBox9' then begin
       if Chb.Object.Value then
          ShowMessage('Начальное состояние: чекбокс выбран.')
       else
          ShowMessage('Начальное состояние: чекбокс сброшен.')  ;
      // Меняем флаг
      Obj.Object.Value := not Obj.Object.Value;
      Break;
    end;
  end;
Но почему-то у меня всегда значение Chb.Object.Value равно true, независимо от
того, установлен чек-бок в экселе или нет.
Что-то все же не так делаю.
Хотя чек-боксы находит верно. Т.е. "обход" элементов управления в экселе работает.
Неверно обращение к значению элементов.

Последний раз редактировалось Sharmon; 23.06.2011 в 14:11.
Sharmon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно изменить положение картинки? quarty Общие вопросы Delphi 2 03.01.2011 00:55
Как программно изменить наличие Series gs199 Компоненты Delphi 1 27.04.2010 10:11
Как программно изменить цвет кнопки в Delphi Source-of-life Помощь студентам 8 13.04.2010 21:18
Как изменить цвет CheckBox’a --=SaNitinDG=- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 18.01.2010 13:53