Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Недопустимая строка с указанием класса, ProgID:


Автор: malor 21.11.2011, 15:23
Строка 
ExcelApp := CreateOleObject('Excel.Application.11'); 
в WinXP/Office 2003 отрабатывает нормально.

Запустил прогу в Win7/Office 2007 возник эксепшен:
user posted image

Автор: pupkindeniska 21.11.2011, 15:36
используй CreateOleObject('Excel.Application');

Код

var
  XL:variant;
begin

  // Обьект EXCEL
    if VarIsEmpty(XL) then
    try
      XL := CreateOleObject('Excel.Application');
    except
      Raise Exception.Create('Error Create!');
      Exit;
    end;

//....
end;

Автор: MetalFan 21.11.2011, 16:15
Цитата(malor @  21.11.2011,  15:23 Найти цитируемый пост)
в WinXP/Office 2003 отрабатывает нормально.
Запустил прогу в Win7/Office 2007

Потому видимо, что 11 - это относится к 2003 офису.
Пользуй просто Excel.Application, как и посоветовал pupkindeniska.

Автор: malor 21.11.2011, 16:42
Цитата(pupkindeniska @  21.11.2011,  15:36 Найти цитируемый пост)
используй CreateOleObject('Excel.Application');

Как затем тогда файл откроется на машине на которой установлен 2003-й Офис ?

Автор: 14SatanA88 21.11.2011, 16:52
Цитата(malor @  21.11.2011,  16:42 Найти цитируемый пост)
Как затем тогда файл откроется на машине на которой установлен 2003-й Офис ?


откроется

Автор: malor 21.11.2011, 16:59
Почему? Ведь он создаст в формате xlsx. Разве не так? 

Автор: 14SatanA88 21.11.2011, 19:52
Цитата(malor @  21.11.2011,  16:59 Найти цитируемый пост)
Ведь он создаст в формате xlsx


насколько я помню (сам нередко писал такие штуки), все отлично работает под 2003 и 2007 офисом
а сохранится в том формате, в котором вы сами укажете

что-то типа этого
Код

Excel.WorkBooks.Item[1].SaveAs('d:\sheet.xls');

Автор: malor 21.11.2011, 20:23
14SatanA88>>а сохранится в том формате, в котором вы сами укажете

В начале я так и делал, white brother! Использовал строку:
CreateOleObject('Excel.Application');

После, сохраняя файл с расширением xls (дело происходит на машине с 2003-м Офисом) и затем открывая его в Office 2007 (уже другая машина) - появлялось сообщение типа "у открываемого файла формат не соответствует содержимому". Что-то такое, да.
, 
Как вам это? 

Автор: 14SatanA88 21.11.2011, 20:56
Цитата(malor @  21.11.2011,  20:23 Найти цитируемый пост)
После, сохраняя файл с расширением xls (дело происходит на машине с 2003-м Офисом) и затем открывая его в Office 2007 (уже другая машина) - появлялось сообщение типа "у открываемого файла формат не соответствует содержимому". Что-то такое, да., Как вам это? 


к сожалению, сейчас не имею возможности набросать проектик, дабы проверить.
завтра на работе попробую.

а пока рекомендую погуглить и почитать статей на эту тему.
благо, в интернетах полно наработок.

Автор: pupkindeniska 22.11.2011, 08:22
malor

Покажи код где создаётся твой объект офиса и начало обработки.....
А так же покажи кусок кода где ты сохраняешь файл.... а то не разобраться так....

Автор: 14SatanA88 22.11.2011, 12:30
например

объявление
Код

var Excel, Sheet: Variant;


создание
Код

  Excel:=CreateOleObject('Excel.Application');
  Excel.DisplayAlerts:=false;
  Excel.Workbooks.Add;
  Excel.Visible:=false;
  Sheet:=Excel.Workbooks[1].WorkSheets[1];


сохранение
Код

  Excel.WorkBooks.Item[1].SaveAs('d:\test.xls');
  Excel.Workbooks.Close;
  Excel.Application.Quit;
  Excel:=Unassigned;


открывает без проблем в 2003-ем и 2007-м офисах

Автор: pupkindeniska 22.11.2011, 13:23
Попробуй вот так сохранять!

Код

  Excel.WorkBook[1].SaveAs('d:\test.xls'); //Вот здесь нужно так!!!!!
  //Excel.Workbooks.Close; //Это вообще не к чему сомо закроется!
  Excel.Quit; //Тут надо вот так!
  Excel:=Unassigned;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)