Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi + Excel пример с DRKB, У меня не работает? 
:(
    Опции темы
Mephisto
Дата 25.7.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Использую TExcelApplication сщ страницы Services. Пишу следующий код:
Код
//объявления переменных 
var 
WorkBk : _WorkBook; //  определяем WorkBook 
WorkSheet : _WorkSheet; //  определяем WorkSheet 
Range:OleVariant;// 

begin 
... 
    Ex1.Connect;//открываем сам Excel 
    //открываем существующий файл, в разных версиях разное кол-во параметров 
    Ex1.Workbooks.Open(FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
      EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam, 
      EmptyParam,EmptyParam,EmptyParam, LOCALE_USER_DEFAULT); 
.....

И.т.д. Первая же строчка не срабатывает. 
Код

Ex1.Connect;

Пишет "Interface not supported". 
Кто-нить сталкивался с этим? 
PM   Вверх
Akella
Дата 25.7.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



я сталкивался - это мой код 
PM MAIL   Вверх
_hunter
Дата 25.7.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



скорее всего версия екселя не совпадает с версией, выбранной при установке делфей... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 25.7.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



Ex1 - компонента со страницы servers, я где-то помечал это, + у меня в USES подключён модуль ExcelXP, и программа нормально работает со всеми версия Excel`я от 97 до 2003 - другие не пробовал.

Добавлено @ 14:13 
если здесь поискать, http://forum.vingrad.ru/index.php?showforum=89, то можно найти полный код процедуры

Добавлено @ 14:18 
не пожадничаю и выложу код из похожей моей программы, но код уже переделан в лучшую сторону
Код

procedure TfmImpFromExcel.ImportArrivalFromExcel(FileName: String);
Var
 WorkBk : _WorkBook; //  определяем WorkBook
 WorkSheet : _WorkSheet; //  определяем WorkSheet
 Range:OleVariant;
 iUnitID,iUnit, iAmount, iTerm,iPrepID, iSeries, iStop, iProd, iPrice, RowsToCopy, iLastRow, iWBIndex, x, iBook, iNameRow : integer;
 sUnitCol, sAmountCol, sTermCol, sProdCol, sPriceCol, sNameCol, sSeriesCol, sFileName : String;
 bNaydeno7, bNaydeno6, bNaydeno5, bNaydeno4, bNaydeno2, bNaydeno1, bNaydeno, bNaydeno3 : boolean;
 vPrep:variant;
 НайденоВБазе, НеНайденоВБазе:integer;
 Препарат, Производитель, Серия, Единица: String;
begin
  sFileName := '';
  screen.Cursor := crHourGlass;
  try
    dm.tPreparats.DisableControls;
    dm.tPreparats.AutoCommit := false;

    if not dm.tArrivalDet.active then
      dm.tArrivalDet.Open;
    
    dm.tArrivalDet.DisableControls;
    dm.tArrivalDet.AutoCommit := False;

    dm.tArrivalDet.BeforeInsert := nil;
    dm.tArrivalDet.AfterPost    := nil;

    НеНайденоВБазе := 0;
    НайденоВБазе := 0;
    try//попытка открытия файла
      Ex1.Connect;
      Ex1.Workbooks.Open(FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam, LOCALE_USER_DEFAULT);
      Ex1.Application.EnableEvents := false;
     except;//в случае ошибки все отменяем и обнуляем
       screen.Cursor:=crDefault;
       RowsToCopy := 0;
       exit;
     end;//try-except Ex1.Connect

     sFileName := ExtractFileName(FileName);
     For iWBIndex := 1 to ex1.Workbooks.Count do
       if ex1.Workbooks.Item[iWBIndex].Name = sFileName then break;
     WorkBk := ex1.WorkBooks.Item[iWBIndex];   // Выбираем WorkBook

   // Определяем WorkSheet
   if WorkBk.Worksheets.Count>1 then
   begin//если кол-во листов больше 1
     For x:=0 to memoSheets.Lines.Count-1 do
     begin
      For iBook:=1 to WorkBk.Worksheets.Count do
      begin
        WorkSheet:=WorkBk.WorkSheets.Get_Item(iBook) as _WorkSheet;
        if WorkSheet.Name = memoSheets.Lines[x] then
        begin
          bNaydeno3:=True;//нашли лист
          WorkSheet.Activate(LOCALE_USER_DEFAULT);//активираем лист
        end;//if WorkSheet.Name = memoSheets.Lines[x] then begin
        if bNaydeno3 then break;
      end;//For iBook:=1 to WorkBk.Worksheets.Count do begin
      if bNaydeno3 then break;
     end;//For x:=0 to memoSheets.Lines.Count-1 do begin
     //если не находим лист из списка ключевых слов, выдаем сообщение
     if not bNaydeno3 then
     begin
         beep;
         ShowMessage('<Не найден лист с данными>'+#13+#13+
         '1.Откройте прайс, посмотрите название листа с препаратами, добавьте в'+#13+
         'ключевые слова название листа с препаратами и повторите импорт'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить и закройте Excel"');
         exit;
     end;//if bNaydeno3=false then begin
   end else//if
     WorkSheet:=WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;;

   StatusBar1.Panels[0].Text:='Поиск последней строки...';
   application.ProcessMessages;
   if Find('99999',iNameRow, sNameCol, WorkSheet) then
     begin
       iLastRow:=iNameRow-1;//в столбце с наименованием ищем "99999"-конец импорта
     end
   else
     begin     //и запоминаем в iRows
      try//если не находим 99999 то ищем последнюю заполненную ячейку
        WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
        // Получаем значение последней строки
        iLastRow:=(ex1.ActiveCell.Row)-1;
       except
         try
           WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Select;
           // Получаем значение последней строки
           iLastRow:=(ex1.ActiveCell.Row);
         except
           iLastRow:=0;
         end;//try-except
       end;//try-except
     end;//else

   if iLastRow=0 then
   begin
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден признак окончания данных, импортируем 6000 строк');
     iLastRow:=6000;
   end;//if iRows=0 then begin

   //ищем наименование препаратов
   For x:=0 to memoName.Lines.Count-1 do
   begin
     bNaydeno:=False;
     if Find(memoName.Lines[x],iNameRow,sNameCol,WorkSheet) then begin
      bNaydeno:=True;
      //количество строк для копирования
      RowsToCopy := iLastRow - iNameRow;
      break;
     end;//if Find(memoNames.Lines[r],iNameRow,sNameCol) then begin
   end;//For r:=0 to memoNames.Lines.Count-1 do begin

   //показываем кол-во строк для копирования
   memoErrors.Lines.Add(TimeToStr(Time)+' Записей для импорта '+IntToStr(RowsToCopy));
   if not bNaydeno then
   begin
       beep;
       ShowMessage('<Не найден столбец с наименованием препаратов>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с наименованиями препаратов, добавьте в'+#13+
         'ключевые слова название столбца с наименованием и повторите импорт'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
       memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец с наименованием препаратов.');
       memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
       memoErrors.Lines.Add('___________________________________________');
       exit;
   end;//if bNaydeno=false then begin

   //ищем серию препаратов
   For x:=0 to memoSeries.Lines.Count-1 do
   begin
     bNaydeno4:=False;
     if Find(memoSeries.Lines[x],iSeries,sSeriesCol,WorkSheet) then
     begin
      bNaydeno4:=True;
      break;
     end;
   end;

   if not bNaydeno4 then
   begin
     beep;
     ShowMessage('<Не найден столбец с сериями препаратов>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с сериями препаратов, добавьте в'+#13+
         'ключевые слова название этого столбца и повторите импорт.'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец с сериями препаратов.');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;

   //ищем серию препаратов
   For x:=0 to memoUnits.Lines.Count-1 do
   begin
     bNaydeno7:=False;
     if Find(memoUnits.Lines[x],iUnit,sUnitCol,WorkSheet) then
     begin
      bNaydeno7:=True;
      break;
     end;
   end;

   if not bNaydeno7 then
   begin
     beep;
     ShowMessage('<Не найден столбец с единицами измерений>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с ед.изм., добавьте в'+#13+
         'ключевые слова название этого столбца и повторите импорт.'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец с сериями препаратов.');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;

   //ищем цену препаратов
   For x:=0 to memoPrice.lines.Count-1 do
   begin
     bNaydeno1:=False;
     if Find(memoPrice.lines[x],iPrice,sPriceCol,WorkSheet) then begin
      bNaydeno1:=True;
      break;
     end;//if Find(memoPrices.lines[r],iPriceRow,sPriceCol) then begin
   end;//For r:=0 to memoPrices.lines.Count-1 do begin
   if not bNaydeno1 then
   begin
     beep;
     ShowMessage('<Не найден столбец с ценами препаратов>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с ценами препаратов, добавьте в'+#13+
         'ключевые слова название этого столбца и повторите импорт.'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец с ценами препаратов.');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;//if bNaydeno1=false then begin

   //ищем количество
   For x:=0 to memoAmount.lines.Count-1 do
   begin
     bNaydeno6:=False;
     if Find(memoAmount.lines[x],iAmount,sAmountCol,WorkSheet) then begin
      bNaydeno6:=True;
      break;
     end;//if Find(memoPrices.lines[r],iPriceRow,sPriceCol) then begin
   end;//For r:=0 to memoPrices.lines.Count-1 do begin
   if not bNaydeno6 then
   begin
     beep;
     ShowMessage('<Не найден столбец "количество">'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с количеством, добавьте в'+#13+
         'ключевые слова название этого столбца и повторите импорт.'+#13+
         '___________________________________________________________________________________'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец "количество".');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;//if bNaydeno1=false then begin


   //ищем производителя препаратов
   For x:=0 to memoProducer.Lines.Count-1 do
   begin
     bNaydeno2:=False;
     if Find(memoProducer.Lines[x],iProd,sProdCol,WorkSheet) then begin
      bNaydeno2:=True;
      break;
     end;//if Find(memoProd.Lines[r],iProdRow,sProdCol) then begin
   end;//For r:=0 to memoProd.Lines.Count-1 do begin
   if not bNaydeno2 then
   begin
     beep;
     ShowMessage('<Не найден столбец с наименованиями производителей>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца с наименованиями производителей,'+#13+
         'добавьте в ключевые слова название этого столбца и повторите импорт'+#13+
         '-----------------------------------------------------------------------------'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец с производителем препаратов.');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;//if bNaydeno2=False then begin


   //ищем срок годности препаратов
   For x:=0 to memoTerm.Lines.Count-1 do
   begin
     bNaydeno5:=False;
     if Find(memoTerm.Lines[x],iTerm,sTermCol,WorkSheet) then begin
      bNaydeno5:=True;
      break;
     end;//if Find(memoProd.Lines[r],iProdRow,sProdCol) then begin
   end;//For r:=0 to memoProd.Lines.Count-1 do begin
   if not bNaydeno5 then
   begin
     beep;
     ShowMessage('<Не найден столбец со сроком годности препаратов>'+#13+#13+
         '1.Откройте прайс, посмотрите название столбца со сроком годности,'+#13+
         'добавьте в ключевые слова название этого столбца и повторите импорт'+#13+
         '-----------------------------------------------------------------------------'+#13+
         '2.Откройте прайс, выберите лист с препаратами, затем выберите меню "Файл->Сохранить"');
     memoErrors.Lines.Add(TimeToStr(Time)+' Не найден столбец со сроком годности препаратов.');
     memoErrors.Lines.Add(TimeToStr(Time)+' Импорт завершен неудачно');
     memoErrors.Lines.Add('___________________________________________');
     exit;
   end;//if bNaydeno2=False then begin


   pb1.Max:=RowsToCopy;
   StatusBar1.Panels[0].Text:='Импорт начат...';
   application.ProcessMessages;
   iStop := 0;
//начинаем импорт со строки iNameRow

//начинаем импорт со строки iNameRow
    Inc(iNameRow);
    For x:=0 to RowsToCopy do
    with dm do
    begin
      Препарат      := Trim(VarToStr(WorkSheet.Cells.Item[iNameRow,sNameCol].Value));
      Серия         := Trim(VarToStr(WorkSheet.Cells.Item[iNameRow,sSeriesCol].Value));
      Производитель := Trim(VarToStr(WorkSheet.Cells.Item[iNameRow,sProdCol].Value));
      Единица       := Trim(VarToStr(WorkSheet.Cells.Item[iNameRow,sUnitCol].Value));

      if (Препарат = '') or (Препарат = ' ')
      then
       Inc(iStop)//если пустая строка, то увеличиваем на 1
      else
       iStop := 0;//если следующая не пустая то обнуляем и продолжаем импорт
      //если начались пустые строки то прекращаем импорт
      if iStop > 4 then break;

      //наименование препарата сначала нужно найти в справочнике препаратов
      if FindPreparat(Препарат, Серия, Производитель, iPrepID)
      then
        begin//если нашли, то у нас есть его ID, т.е. iPrepID
          //добавляем в приход
          Inc(НайденоВБазе);
          tArrivalDet.Append;
          tArrivalDetPREPARAT_ID.Value    := iPrepID;

          if cbWithVAT.state = cbsUnchecked then
            begin
             tArrivalDetPRICE_WO_NDS.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0);
             tArrivalDetW_VAT.Value          := False;
            end
          else
            begin
              tArrivalDetPRICE_WO_NDS.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0) * 1.2;
              tArrivalDetW_VAT.Value          := True;
            end;

          tArrivalDetPRICE_RETAIL.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0) * fmNewArrival.ceCoeff.Value;
          tArrivalDetAMOUNT.Value         := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sAmountCol].Value)),0);
          if FindUnit(Единица,iUnitID)
          then
            tArrivalDetUNIT_ID.Value      := iUnitID
          else
            tArrivalDetUNIT_ID.Value      := AddNewUnit(Единица);

          tArrivalDet.Post;
        end
      else
        begin//добавляем в справочник препаратов новый препарат
          Inc(НеНайденоВБазе);
          tPreparats.Append;
          iPrepID := tPreparatsID.Value;
          tPreparatsNAME.Value            := Препарат;
          tPreparatsPRODUCER.Value        := Производитель;
          tPreparatsSERIES.Value          := Серия;
          tPreparatsPRICE_RETAIL.AsFloat  := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0) * fmNewArrival.ceCoeff.Value;
          tPreparatsTERM.Value            := Trim(VarToStr(WorkSheet.Cells.Item[iNameRow,sTermCol].Value));

          //а теперь добавляем его в приход
          tArrivalDet.Append;
          tArrivalDetPREPARAT_ID.Value    := iPrepID;

          if FindUnit(Единица,iUnitID)
          then
            tArrivalDetUNIT_ID.Value      := iUnitID
          else
            tArrivalDetUNIT_ID.Value      := AddNewUnit(Единица);
          tPreparats.Post;


          if cbWithVAT.state = cbsUnchecked then
            begin
             tArrivalDetPRICE_WO_NDS.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0);
             tArrivalDetW_VAT.Value          := False;
            end
          else
            begin
              tArrivalDetPRICE_WO_NDS.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0) * 1.2;
              tArrivalDetW_VAT.Value          := True;
            end;

          tArrivalDetPRICE_RETAIL.AsFloat := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sPriceCol].Value)),0) * fmNewArrival.ceCoeff.Value;
          tArrivalDetAMOUNT.Value         := StrToFloatDef(DelProb(VarToStr(WorkSheet.Cells.Item[iNameRow,sAmountCol].Value)),0);
          if FindUnit(Единица,iUnitID)
          then
            tArrivalDetUNIT_ID.Value      := iUnitID
          else
            tArrivalDetUNIT_ID.Value      := AddNewUnit(Единица);
          tArrivalDet.Post;
        end;

        Inc(iNameRow);
        pb1.Position := x;
        application.ProcessMessages;
        if bAbort then
        begin
          Break;
        end;

    end;//For e:=0 to RowsToCopy do begin


  finally
    memoErrors.Lines.Add('Завершение импорта...');
    dm.tPreparats.EnableControls;
    dm.tArrivalDet.EnableControls;

    dm.tArrivalDet.BeforeInsert := dm.tArrivalDetBeforeInsert;
    dm.tArrivalDet.AfterPost    := dm.tArrivalDetAfterPost;


    if dm.tArrivalDet.UpdateTransaction.InTransaction then dm.tArrivalDet.UpdateTransaction.Commit;
    if DM.tPreparats.UpdateTransaction.InTransaction then DM.tPreparats.UpdateTransaction.Commit;

    dm.tArrivalDet.AutoCommit := true;
    DM.tPreparats.AutoCommit := true;

    Screen.Cursor := crDefault;
    memoErrors.Lines.Add('Найдено в базе: '+IntToStr(НайденоВБазе));
    memoErrors.Lines.Add('Добавлено новых: '+IntToStr(НеНайденоВБазе));
    memoErrors.Lines.Add('Импорт завершен');
  end;

end;


Код

function TfmImpFromExcel.DelProb(prob: string): string;
Var
i:integer;
begin
 result:='';
 For i:=1 to Length(prob) do begin
   if (prob[i] in ['0'..'9']) or (prob[i]=',') or((prob[i]='.')) then result:=result+prob[i];
 end;
end;


Код

Function TfmImpFromExcel.Find(sText:String;Var iRow:Integer;Var sCol:String;WorkSheetF:_WorkSheet):Bool;
Var
 UsedRange, Range: OLEVariant;
 t,y:Integer;//вспомогат для импорта
 FirstAddress: string;
begin //поиск
  Result:=False;
  UsedRange := WorkSheetF.Range['A1','Z5000'];
  Range := UsedRange.Find(What:=sText, LookIn := xlValues, LookAt := xlWhole,SearchDirection := xlNext);
  if not VarIsClear(Range) then begin
    try
      FirstAddress := Range.Address;
      //вычисляем номер строки из полученного адреса(абсолютные координаты)
      //он начинается после второго значка доллара
      t:=PosEx('$',FirstAddress,2);
      iRow:=StrToInt(Copy(FirstAddress,t+1,length(FirstAddress)-t));
      //вычисляем номер столбца из полученного адреса(абсолютные координаты)
      //буква начинается со второго символа
      y:=PosEx('$',FirstAddress,2);
      sCol:=Copy(FirstAddress,2,y-2);
      Result:=true;
      VarClear(Range);
      VarClear(UsedRange);
    except
      Result:=False;
    end;//try-except
  end;//if
end;


Добавлено @ 14:18 
вот "мой" Uses
Код
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ActnMan, ActnCtrls, XPStyleActnCtrls, ActnList, cxTextEdit,
  cxControls, cxContainer, cxEdit, cxMemo, ExcelXP, OleServer, StrUtils,
  {, Excel2000{, Excel97, TlHelp32,} ComObj, DB, ComCtrls, DBGridEh, StdCtrls,
  Mask, DBCtrlsEh, DBLookupEh, pFIBQuery, PropFilerEh, PropStorageEh, cxCheckBox;


Добавлено @ 14:20 
код импортирует из Excel`я в БД (FireBird)  5-6 тысяч строк (4 столбца) достаточно быстро  

Это сообщение отредактировал(а) Akella - 25.7.2006, 14:21
PM MAIL   Вверх
Mephisto
Дата 25.7.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Akella @  25.7.2006,  13:11 Найти цитируемый пост)
не пожадничаю и выложу код из похожей моей программы, но код уже переделан в лучшую сторону

Спасибо. Но у меня ошибка выскакивает в том же месте. Буду думать. Пасибки всем. smile

Добавлено @ 14:44 
Цитата(Akella @  25.7.2006,  13:11 Найти цитируемый пост)
ExcelXP, OleServer,

И у меня такая же ерунда. smile 
PM   Вверх
Akella
Дата 25.7.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



очень странно, у меня и под d7 b под BDS 2006 всё нормально

Добавлено @ 15:41 
а какой у тебя Excel установлен?

Добавлено @ 15:41 
попробуй сделать это в новом проекте 

Это сообщение отредактировал(а) Akella - 25.7.2006, 15:41
PM MAIL   Вверх
Mephisto
Дата 25.7.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Akella @  25.7.2006,  14:40 Найти цитируемый пост)
очень странно, у меня и под d7 b под BDS 2006 всё нормально

[censored 2] !  smile  smile  smile  smile  smile 
Ненавижу Microsoft.
Переустановил Office и все начало работать. УЖОСНАХ!


Цитата(Akella @  25.7.2006,  14:40 Найти цитируемый пост)
а какой у тебя Excel установлен?

У меня терминальный сервер на котором установлен 2003 MS Office. 

Спасибо. Уже все нормально. Вопрос снят.  
PM   Вверх
Beltar
Дата 5.4.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 1
Всего: 7



Вытащу тему на свет божий.
Неужели никто не знает, почему такая байда возникает и что с ней делать я уже зае**лся переустанавливать Office и Delphi. Ни с 2000, ни с XP не работают ни D7 ни BDS 2006. Дома нормально, на соседнем компьютере даже Excel 2007 нормально запускается!
Хоть винду сноси.
Почистить при удалении реестр от своих <Censored> guid'ов у Office мозгов не хватает.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 19.4.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 2
Всего: 329



Народ, в каком месте ошибка-то?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1298 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.