vovanzp
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору fixer84 Взял с сайта который ты дал код, переделал его под себя (чтобы сразу в Excel экспорт был). Вот, что получилось. При нажатии на кнопку вылетает сообщение типа "Access vioalation at address ....... in module 'Project 1'. Read of address ....", и одновременно с этим открывается Excel и туда вставляется все из буфера обмена =-0. В чем дело? Может ошибка в коде. Хелп плиз procedure TForm1.Button1Click(Sender: TObject); var bm: TBookmark; col, row: Integer; sline: string; mem: TMemo; ExcelApp: Variant; begin DBGrid1.DataSource.DataSet.DisableControls; bm := DBGrid1.DataSource.DataSet.GetBookmark; DBGrid1.DataSource.DataSet.First; ExcelApp := CreateOleObject('Excel.Application'); ExcelApp.WorkBooks.Add(xlWBatWorkSheet); ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Тест'; // Сперва отправляем данные в memo // работает быстрее, чем отправлять их напрямую в Excel mem := TMemo.Create(Self); mem.Visible := false; mem.Parent := Form1; mem.Clear; sline := ''; // добавляем информацию для имён колонок for col := 0 to DBGrid1.FieldCount-1 do sline := sline + DBGrid1.Fields[col].DisplayLabel + #9; mem.Lines.Add(sline); // получаем данные из memo for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do begin sline := ''; for col := 0 to DBGrid1.FieldCount-1 do sline := sline + DBGrid1.Fields[col].AsString + #9; mem.Lines.Add(sline); DBGrid1.DataSource.DataSet.Next; end; ExcelApp.Workbooks[1].WorkSheets['Тест'].Paste; ExcelApp.Visible := true; FreeAndNil(ExcelApp); DBGrid1.DataSource.DataSet.GotoBookmark(bm); DBGrid1.DataSource.DataSet.FreeBookmark(bm); DBGrid1.DataSource.DataSet.EnableControls; end; |