|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка при заполнении ячейки в Excel
Всем хай!
У меня возникла проблема и я никак не могу понять суть ошибки!!! Ниже приведенный код, на мой взгляд, вполне реален и ошибок не содержит...Компилятор тоже не ругается, но при выполнении программы появляется ошибка при вводе данных!!! Очень прошу помощи!!! У меня есть форма, на которой есть МЭМО, и кнопка Всем заранее спасибки! Код: var Form1: TForm1; implementation uses ..., ComObj; {$R *.dfm} var E:variant; Function CreateExcel:boolean; begin CreateExcel:=true; try E:=CreateOleObject('Excel.Application'); except CreateExcel:=false; end; End; Function SetRange(sheet:variant;range:string;value_:variant ):boolean; begin SetRange:=true; try E.ActiveWorkbook.Sheets.Item[sheet].Range[range]:=value_; ОШИБКА В ЭТОМ МЕСТЕ!!! except SetRange:=false; end; End; Function VisibleExcel(visible:boolean):boolean; begin VisibleExcel:=true; try E.visible:=visible; except VisibleExcel:=false; end; End; Function AddWorkBook:boolean; begin AddWorkBook:=true; try E.Workbooks.Add; except AddWorkBook:=false; end; End; Function AddSheet(newsheet:string):boolean; begin AddSheet:=true; try E.ActiveWorkbook.Sheets.Add; E.ActiveWorkbook.ActiveSheet.Name:=newsheet; except AddSheet:=false; end; End; Function SaveWorkBookAs(file_:string):boolean; begin SaveWorkBookAs:=true; try E.DisplayAlerts:=False; E.ActiveWorkbook.SaveAs(file_); E.DisplayAlerts:=True; except SaveWorkBookAs:=false; end; End; Function CloseWorkBook:boolean; begin CloseWorkBook:=true; try E.ActiveWorkbook.Close; except CloseWorkBook:=false; end; End; Function CloseExcel:boolean; begin CloseExcel:=true; try E.Quit; except CloseExcel:=false; end; End; //Вариант №1 procedure TForm1.Button2Click(Sender: TObject); var i:byte; begin if not CreateExcel then exit; VisibleExcel(true); If addWorkBook then AddSheet('Новый лист'); for i:=1 to 5 do begin setrange(1,'A'+listbox1.Items[i],0); end; SaveWorkbookAs('c:\123.xls'); CloseWorkBook; CloseExcel; end; //Вариант №2 procedure TForm1.Button2Click(Sender: TObject); var i:byte; begin if not CreateExcel then exit; VisibleExcel(true); If addWorkBook then AddSheet('Новый лист'); for i:=1 to 5 do begin setrange(1,'A'+memo1.lines.strings[i],0); end; SaveWorkbookAs('c:\123.xls'); CloseWorkBook; CloseExcel; end; Что с первой процедурой, что со второй записать не получается, а вот если я вместо setrange(1,'A'+memo1.lines.strings[i],0); напишу setrange(1,'A'+inttostr(i),0); то все записывает без вопросов....Уже второй день пытаюсь понять в чем тут дело и понять не могу....Вроде все правильно..... Буду очень благодарен за совет или помощь!!!!!!! Последний раз редактировалось ~ SaM ~, 22.01.2007 в 16:44. |
#2
|
|||
|
|||
на вскидку : посмотри Vba что - то с командами не то.
|
#3
|
|||
|
|||
Делаю так:
Function TForm1.SetRange(sheet:variant;range:string;value_: variant ):boolean; begin SetRange:=true; try E.Sheets[sheet].Cells[x, y].Value := value_; except SetRange:=false; end; End; |