Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi OLE - Excel schließt sich nach Create (https://www.delphipraxis.net/160201-ole-excel-schliesst-sich-nach-create.html)

WizoHulk 2. Mai 2011 13:54

OLE - Excel schließt sich nach Create
 
hallo

ich bin hier schon am verzweifen.
Ich erstelle mir eine neue Excel Instanz mit diesem code
Delphi-Quellcode:
try
  Excel        := CreateOleObject('Excel.Application'); //Instanz wird erstellt
  Excel.Visible := True;                                //Ohne Worte
except
  ShowMessage(ERROR_MSG);
end;
aber sobald ich aus der procedure raus gehe schließt sich excel.
Hat jemand eine vermutung woran das liegen könnte?

Bernhard Geyer 2. Mai 2011 14:01

AW: OLE - Excel schließt sich nach Create
 
Wo ist die Variable Excel definiert.

Ich Tipp darauf das sie in der Methode definiert ist.

Bummi 2. Mai 2011 14:01

AW: OLE - Excel schließt sich nach Create
 
nimm mal die Variablendeklartion vom Stack, also irgendwo in den Private oder Public Bereich....

geskill 2. Mai 2011 14:08

AW: OLE - Excel schließt sich nach Create
 
Zitat:

Delphi-Quellcode:
uses ComObj, Excel2000;

procedure TAddInModule.test;
var
  IExcel: ExcelApplication;
begin
  IExcel := CreateOLEObject('Excel.Application') as ExcelApplication;
  if Assigned(IExcel) then
    try
      // TODO
      //IExcel.DoSomething
    finally
      IExcel := nil;
    end;
end;

Ich würde auch immer direkt mit dem Typ arbeiten. Über das Menü -> Komponente -> Komponente importieren... kannst du die entsprechende Typbibliothek importieren.

WizoHulk 2. Mai 2011 14:08

AW: OLE - Excel schließt sich nach Create
 
klappt wunderbar. Danke.
Was mich dann aber wundert das es bei Word funktioniert.

Bernhard Geyer 2. Mai 2011 14:12

AW: OLE - Excel schließt sich nach Create
 
Zitat:

Zitat von WizoHulk (Beitrag 1098328)
klappt wunderbar. Danke.
Was mich dann aber wundert das es bei Word funktioniert.

Da wurde von MS implementiert das ein erzeugte Instanz explizit per .Close-Aufruf geschlossen wird.

WizoHulk 2. Mai 2011 15:03

AW: OLE - Excel schließt sich nach Create
 
habe die Variablen jetzt im Privat bereich deklariert.
jetzt wirft er mir aber eine exception wenn ich excel oder word createn will.

hier mal mein code
Delphi-Quellcode:
//********************************************************************************************************
// Microsoft OLE *}
{*    Anfang    *}
type
  TOffice = class(TObject)
  private
 //   Excel : OleVariant;
//    Word : OleVariant;
  public
    Excel : OleVariant;
    Word : OleVariant;
    constructor Create;
    destructor destroy;override;
    procedure OeffneWord(NeuesDokument: Boolean = False);
    procedure OeffneExcel(NeueTabelle : Boolean = False);
  end;

{*     Ende     *}

implementation
//*********************************************************************************************************
//               MICROSOFT
//               *Anfang*
//*********************************************************************************************************

constructor TOffice.Create;
begin
// mach was
end;

destructor TOffice.destroy;
begin
//destroy
end;

procedure TOffice.OeffneExcel(NeueTabelle : Boolean = False);
const
  ERROR_MSG : string = 'Microsoft Excel kann nicht starten!';

begin
  try
    Excel := GetActiveOleObject('Excel.Application');
    Excel.Windowstate := wsNormal
  except
    {* Ist keine Vorhanden wird neu erstellt *}
    try
      screen.Cursor := crHourGlass;                         //SandUhr Aktiv
      Excel        := CreateOleObject('Excel.Application'); //Instanz wird erstellt
      Excel.Visible := True;                                //Ohne Worte
      if NeueTabelle then
        Excel.Workbooks.Add;                                  //ein Tabsheet wird hinzugefügt
      screen.Cursor :=crDefault;                            //Sanduhr Deaktiv
    except
      ShowMessage(ERROR_MSG);
    end;
  end;
  screen.cursor:=crDefault;
end;

procedure TOffice.OeffneWord(NeuesDokument: Boolean = False);
var
  Word     : OleVariant;
begin
 try
   {* Prüfe ob instanz vorhanden ist *}
   Word            := GetActiveOleObject('Word.Application');
   Word.WindowState := wsNormal;
 except
   try
     screen.Cursor := crHourGlass;
     Word         := CreateOleObject('Word.Application');
     Word.Visible := True;
     if NeuesDokument then
       Word.Documents.Add;
   except
     ShowMessage('Microsoft Word kann nicht starten.');
   end;
 end;
 screen.cursor:=crDefault;

end;

//*********************************************************************************************************
//                 MICROSOFT
//                  *Ende*
//*********************************************************************************************************

Bernhard Geyer 2. Mai 2011 15:08

AW: OLE - Excel schließt sich nach Create
 
Zitat:

Zitat von WizoHulk (Beitrag 1098343)
jetzt wirft er mir aber eine exception wenn ich excel oder word createn will.

Es wäre gut zu wissen wie der Text dieser Fehlermeldung aussieht.
Meine Glaskugel ist noch in den Osterferien

Bummi 2. Mai 2011 15:11

AW: OLE - Excel schließt sich nach Create
 
Hast Du eine Instanz von TOffice erzeugt und verwendest diese?

WizoHulk 2. Mai 2011 15:42

AW: OLE - Excel schließt sich nach Create
 
ohhh Kommando zurück. hatte im constructor und im destructor inherited vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz