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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 16:50   #1
kompaky
Иденитса!!
Пользователь
 
Аватар для kompaky
 
Регистрация: 11.02.2011
Сообщений: 24
Вопрос Delphi & Excel

На данной строке
Код:
MsExcel.Range[MsExcel.Cells[per1,per2]]:=StringGrid1.Cells[stl,stro];
получаю ошибку OLE объекта 'Член группы не найден'. Подскажите правильно ли такое присвоение?
тип
MsExcel: Variant;
подключаюсь так
Код:
MsExcel := CreateOleObject('Excel.Application');
 path:=ExtractFilePath(paramstr(0));
MsExcel.Workbooks.Open[path+'\etalon.xls'];
Запретим gmail?
kompaky вне форума Ответить с цитированием
Старый 19.04.2011, 17:24   #2
SpyCrypt
 
Регистрация: 09.04.2011
Сообщений: 7
По умолчанию

Я делал так
Код:
uses ...... comobj;
...............
  
.....................
Var col, row: Integer;
  sline: string;
  mem: TMemo;
  ExcelApp: Variant;
begin
  mem.Clear;
  sline := '';
  sLine := 'aaa' + #9 + 'bbb';
  memo1.Lines.Add(sline);
  memo1.SelectAll;
  memo1.CopyToClipboard;
  ExcelApp.Visible := true;
end;
У нас принято оформлять код специальным тегом. Кнопка #. Модератор

Последний раз редактировалось dr.Chas; 26.07.2011 в 23:47.
SpyCrypt вне форума Ответить с цитированием
Старый 20.04.2011, 09:20   #3
kompaky
Иденитса!!
Пользователь
 
Аватар для kompaky
 
Регистрация: 11.02.2011
Сообщений: 24
По умолчанию

так не подходит у меня взят stringgrid в нем данные считаны и распределены в нужном порядке, и мне надо записать эти данные в файл excel динамически смешаясь по ячейкам используя как столбцы так и строки, использую метод RC адресации
Код:
lev:= StringGrid1.Cells[stl,stro];//данные которые надо записать 
per1:=11+par1;// идем по строкам (с 11 потому что  идет статика до 11  потом заполнение )
per2:=1+par2;// идем по столбцам т.е. буквам(A,B,C...)  в RC  они являться  цифрами
MsExcel.Range[MsExcel.Cells[per1,per2]]:=lev;//запись  в файл 
inc(par2);
MsExcel.Range[MsExcel.Cells[per1,per2]]:=lev; на эту строку получаю ошибку ole обьекта пишет что член группы не найден...
Исходя из этого помогите как можно записать...
ну или предложите другой метод как двигаться по строкам и столбцам динамически
Запретим gmail?
kompaky вне форума Ответить с цитированием
Старый 20.04.2011, 09:34   #4
kompaky
Иденитса!!
Пользователь
 
Аватар для kompaky
 
Регистрация: 11.02.2011
Сообщений: 24
По умолчанию

все разобрался))))
Запретим gmail?
kompaky вне форума Ответить с цитированием
Старый 22.07.2011, 08:13   #5
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от kompaky Посмотреть сообщение
На данной строке
Код:
MsExcel.Range[MsExcel.Cells[per1,per2]]:=StringGrid1.Cells[stl,stro];
получаю ошибку OLE объекта 'Член группы не найден'. Подскажите правильно ли такое присвоение?
тип
MsExcel: Variant;
подключаюсь так
Код:
MsExcel := CreateOleObject('Excel.Application');
 path:=ExtractFilePath(paramstr(0));
MsExcel.Workbooks.Open[path+'\etalon.xls'];
Не подскажете как разобрались?
Я не могу записать область ячеек заданную координатами x,y в переменную RangeMatrix:Variant
Код:
RangeMatrix:=XLApp.Range('A1',XLApp.Cells.Item(x,y)).Value;
Вылазит эта же ошибка.
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 22.07.2011, 12:10   #6
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Импорт из StringGrid я сделал таким образом:
Код:
var
Data: olevariant;
.......................
.......................
Data:= VarArrayCreate([1, StringGrid1.RowCount, 1, StringGrid1.ColCount],varVariant);
for i := 0 to StringGrid1.ColCount-1 do
for j := 0 to StringGrid1.RowCount-1 do
Data[j+1,i+1]:=StringGrid1.Cells[i,j];
Sheet.Range[RefToCell(1,1),RefToCell(StringGrid1.RowCount,StringGrid1.ColCount)]:=Data;
работает.
Но теперь надо обратно с Excel в StringGrid имортировать, а таким же способом не работает, выдаёт либо 'Член группы не найден', либо 'invalid variant operation'
PS.После 4 часов мучения импорт придумал сделать так
Код:
Sheet.Cells.SpecialCells($0000000B, EmptyParam).Activate;
x:=e.ActiveCell.Row;
y:=e.ActiveCell.Column;
StringGrid1.RowCount:=x;
StringGrid1.ColCount:=y;
for i := 0 to y do
for j := 0 to x do
StringGrid1.Cells[i,j]:=Sheet.Cells[j+1,i+1];
Вроде работает.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 22.07.2011 в 12:40.
rainbow вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
INDY 10 (idCmdTCPServer & idCmdTCPClient) & Delphi 2009 S_Yevgeniy Работа с сетью в Delphi 24 27.02.2012 08:56
Delphi & MS Excel Ntlegend Общие вопросы Delphi 3 25.04.2010 05:20
EXCEL&DELPHI Wi1D БД в Delphi 1 10.07.2009 08:01
Delphi & Excel Rust25 Общие вопросы Delphi 2 05.09.2008 06:35
Delphi & Access & Ole vodila БД в Delphi 0 15.07.2008 11:11