Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 21:10   #1
sniip
Пользователь
 
Регистрация: 27.05.2012
Сообщений: 22
По умолчанию НЕ получается открыть Ексель файл

Пытаюсь открыть файл эксель стандартной функцией
Код:
MyExcel.Workbooks.Open['C:\Users\111\Desktop\программ\sklad.xls'];
вот код программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, ComObj, ActiveX;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Panel2: TPanel;
    Panel3: TPanel;
    StringGrid1: TStringGrid;
    Panel4: TPanel;
    Edit1: TEdit;
    Button3: TButton;
    sklad: TStringGrid;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    rezhim:integer;
    MyExcel: OleVariant;
    put:string;
  public
    { Public declarations }
  end;
const ExcelApp = 'Excel.Application';
var
  Form1: TForm1;
  MyExcel: OleVariant;
implementation

{$R *.dfm}

function CheckExcelRun: boolean;
begin
  try
    MyExcel:=GetActiveOleObject(ExcelApp);
    Result:=True;
  except
    Result:=false;
  end;
end;

function CheckExcelInstall:boolean;
var
  ClassID: TCLSID;
  Rez : HRESULT;
begin
// Ищем CLSID OLE-объекта
  Rez := CLSIDFromProgID(PWideChar(WideString(ExcelApp)), ClassID);
  if Rez = S_OK then  // Объект найден
    Result := true
  else
    Result := false;
end;

function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
begin
  try

    if CheckExcelInstall then
      begin
        MyExcel:=CreateOleObject(ExcelApp);

        MyExcel.Application.EnableEvents:=DisableAlerts;
        MyExcel.Visible:=Visible;
        Result:=true;
      end
    else
      begin
        MessageBox(0,' MS Excel не установлен','Ошибка',MB_OK+MB_ICONERROR);
        Result:=false;
      end;
  except
    Result:=false;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
panel1.Color:=clgreen;
rezhim:=1;
label1.Caption:='Режим: Торговля';
edit1.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
panel1.Color:=clyellow;
rezhim:=0;
label1.Caption:='Режим: Склад';
edit1.SetFocus;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
put:=extractfilepath(application.exename);
stringgrid1.Cells[0,0]:='Штрихкод';
stringgrid1.Cells[1,0]:='Наименование';
stringgrid1.Cells[2,0]:='Количество';
stringgrid1.Cells[3,0]:='Цена';
stringgrid1.Cells[4,0]:='Дополнительно';
stringgrid1.ColWidths[0]:=100;
stringgrid1.ColWidths[1]:=150;
stringgrid1.ColWidths[2]:=80;
stringgrid1.ColWidths[3]:=80;
stringgrid1.ColWidths[4]:=300;
sklad.Cells[0,0]:='Штрихкод на Складе';
sklad.Cells[1,0]:='Наименование';
sklad.Cells[2,0]:='Количество';
sklad.Cells[3,0]:='Цена';
sklad.Cells[4,0]:='Дополнительно';
sklad.ColWidths[0]:=120;
sklad.ColWidths[1]:=150;
sklad.ColWidths[2]:=80;
sklad.ColWidths[3]:=80;
sklad.ColWidths[4]:=300;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin

stringgrid1.RowCount:=stringgrid1.RowCount+1;
stringgrid1.Cells[0,stringgrid1.RowCount-1]:=edit1.Text;
edit1.Text:='';

end;

procedure TForm1.FormActivate(Sender: TObject);
begin
if CheckExcelInstall then if not(CheckExcelRun) then RunExcel(true,true);
MyExcel.Workbooks.Open['C:\Users\111\Desktop\программ\sklad.xls'];
//MyExcel.Workbooks.Open[put+'sklad.xls'];
edit1.SetFocus;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if button4.Caption='Показать Склад' then begin
sklad.Visible:=true; button4.Caption:='Убрать Склад';     end else
begin
sklad.Visible:=false;
button4.Caption:='Показать Склад';
end;

end;

end.
из за чего может не работать?
sniip вне форума Ответить с цитированием
Старый 10.07.2012, 21:31   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Пройдись по шагам... где конкретно и что имено происходит не так?

Мне лень вникать. Я начинал работу так, у меня работает:

Код:
Procedure StartExcelReport(FileName: String; RE: TRichEdit; Code: String);
Begin
// Оформить отчёт
// Обьект EXCEL
XL := CreateOleObject('Excel.Application');
// Чтоб не задавал вопрос о сохранении документа
XL.DisplayAlerts := True;
// загружаем шаблон
XL.WorkBooks.Open(FileName);
MyExcel:=CreateOleObject(ExcelApp); - может тут параметр как у меня поставить?

адд: а что за скобочки такие? Какая Делфи вообще?

MyExcel.Workbooks.Open['C:\Users\111\Desktop\программ\skla d.xls']; ??

Ставь круглые.
Сливочное масло Valio - компиляция как по маслу

Последний раз редактировалось Valio; 10.07.2012 в 21:39.
Valio вне форума Ответить с цитированием
Старый 11.07.2012, 05:04   #3
sniip
Пользователь
 
Регистрация: 27.05.2012
Сообщений: 22
По умолчанию

Ну скобочки там круглые... эт я что то когда отправлял напутал...
'Excel.Application'--- сделлал так таже самая ошибка на строчке с открытием файла - invalid variant operation
sniip вне форума Ответить с цитированием
Старый 11.07.2012, 05:18   #4
sniip
Пользователь
 
Регистрация: 27.05.2012
Сообщений: 22
По умолчанию

вот что заметил... если я пишу вот так:
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
MyExcel:=CreateOleObject('Excel.Application');
//RunExcel(true,true);
MyExcel.visible:=true;

MyExcel.Workbooks.Open(put+'1.xls');
edit1.SetFocus;
end;
все работает... но как только я убираю весь код в функцию:
Код:
function RunExcel(DisableAlerts:boolean=true; Visible: boolean=false): boolean;
begin
  Try

    MyExcel:= GetActiveOleObject('Excel.Application');
    result:=true;
  Except

   MyExcel:=CreateOleObject('Excel.Application');
   result:=false;
  end;
  MyExcel.DisplayAlerts := DisableAlerts;
  MyExcel.Visible:=Visible;
end;
выдает ошибку... я туплю... то же самое же написано!!! в чем проблмема7)))

Последний раз редактировалось sniip; 11.07.2012 в 05:21.
sniip вне форума Ответить с цитированием
Старый 11.07.2012, 05:22   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

узнайте же разницу между методом и просто функцией.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
Не получается открыть .m3g Krasi Общие вопросы по Java, Java SE, Kotlin 0 08.05.2011 19:15
Не получается открыть .exe файл, через команду ShellExecute Norton Общие вопросы Delphi 5 05.05.2009 19:57
Не получается открыть через Button файл проекта AutoPlay Media Studio Norton Общие вопросы Delphi 2 30.04.2009 01:49
не могу открыть ексель Kakha Microsoft Office Excel 2 05.02.2008 22:33