Подскажите почему OLE выдаёт ошибку в строке for i:=1 to 1 do Excel.Range('A'+IntToStr(i)):='qq';
если вписать A1 то всё нормально а программно адресовать ячейку не получается:(
procedure TForm1.Button1Click(Sender: TObject);
var
path: string;
Excel, Sheet: OleVariant;
i:integer;
begin
path:='f:\1.xls';
Excel:=CreateOLEObject('Excel.Application');
try
Excel.WorkBooks.Open(WideString(UTF8Decode(path)));
Excel.Visible:=true;
for i:=1 to 1 do Excel.Range('A'+IntToStr(i)):='qq';
except
on E:EOleException do
ShowMessage(UTF8Encode(E.Message));
end;
end;
Excel
Модератор: Модераторы
Возможно дело в том, что работает с указателями на память.
Попробуйте так
temps:='A'+IntToStr(i);
Excel.Range(temps):='qq';
тогда Excel.Range будет работать с готовой строкой в памяти
Попробуйте так
temps:='A'+IntToStr(i);
Excel.Range(temps):='qq';
тогда Excel.Range будет работать с готовой строкой в памяти
-
SeventhSon
- новенький
- Сообщения: 56
- Зарегистрирован: 17.02.2009 00:57:17
пробовал.не получается.какого типа должна быть переменная temps?
может Variant
или вообще указатель, смотри описание Excel.Range
или вообще указатель, смотри описание Excel.Range
-
SeventhSon
- новенький
- Сообщения: 56
- Зарегистрирован: 17.02.2009 00:57:17
заработало.вот так надо:
теперь подскажите(а то будет как в прошлый раз!!) как в шаблон отчёта экселя вставлять строки.ну т.е. есть шаблон,в нём шапка и подпись.как в середину вставить своё,заранее не известное количество строк с данными?
нашёл кое-что.вставляется строка вот так Excel.Selection.EntireRow.Insert;
но как перед этим выделить строку?
ни Excel.Rows('2:2').Select; ни Excel.Range('C1').Select; не работает:(
Код: Выделить всё
for i:=1 to 65535 do
begin
Excel.Range(WideString(UTF8Decode('A'+IntToStr(i)))):='qq';
end; теперь подскажите(а то будет как в прошлый раз!!) как в шаблон отчёта экселя вставлять строки.ну т.е. есть шаблон,в нём шапка и подпись.как в середину вставить своё,заранее не известное количество строк с данными?
нашёл кое-что.вставляется строка вот так Excel.Selection.EntireRow.Insert;
но как перед этим выделить строку?
ни Excel.Rows('2:2').Select; ни Excel.Range('C1').Select; не работает:(
SeventhSon
может просто вставлять подпись из программы после вставки "середины"?
что касается:
Excel.Selection.EntireRow.Insert;
то Selection - это Range
попробуй:
Range('C1').EntireRow.Insert;
теперь подскажите(а то будет как в прошлый раз!!) как в шаблон отчёта экселя вставлять строки.ну т.е. есть шаблон,в нём шапка и подпись.как в середину вставить своё,заранее не известное количество строк с данными?
может просто вставлять подпись из программы после вставки "середины"?
что касается:
Excel.Selection.EntireRow.Insert;
то Selection - это Range
попробуй:
Range('C1').EntireRow.Insert;
