![]() |
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:
aber sobald ich aus der procedure raus gehe schließt sich excel.
try
Excel := CreateOleObject('Excel.Application'); //Instanz wird erstellt Excel.Visible := True; //Ohne Worte except ShowMessage(ERROR_MSG); end; Hat jemand eine vermutung woran das liegen könnte? |
AW: OLE - Excel schließt sich nach Create
Wo ist die Variable Excel definiert.
Ich Tipp darauf das sie in der Methode definiert ist. |
AW: OLE - Excel schließt sich nach Create
nimm mal die Variablendeklartion vom Stack, also irgendwo in den Private oder Public Bereich....
|
AW: OLE - Excel schließt sich nach Create
Zitat:
|
AW: OLE - Excel schließt sich nach Create
klappt wunderbar. Danke.
Was mich dann aber wundert das es bei Word funktioniert. |
AW: OLE - Excel schließt sich nach Create
Zitat:
|
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* //********************************************************************************************************* |
AW: OLE - Excel schließt sich nach Create
Zitat:
Meine Glaskugel ist noch in den Osterferien |
AW: OLE - Excel schließt sich nach Create
Hast Du eine Instanz von TOffice erzeugt und verwendest diese?
|
AW: OLE - Excel schließt sich nach Create
ohhh Kommando zurück. hatte im constructor und im destructor inherited vergessen.
|
AW: OLE - Excel schließt sich nach Create
muss ich nach den Aufruf von create öffneWord und/oder ÖffneExcel die Klasse wieder Freigeben?
denn wenn ich sie Freigeben schließt sich excel und/oder Word auch. |
AW: OLE - Excel schließt sich nach Create
Wenn Du sie nicht mehr brauchst, freigeben....
|
AW: OLE - Excel schließt sich nach Create
Ja aber wenn ich das programm schließe, schließe ich gleichzeitig Word/Excel was es ja nicht soll.
|
AW: OLE - Excel schließt sich nach Create
Darf ich die klasse nicht mehr Freigeben?
Wird sie Freigeben schließt sich auch Excel. |
AW: OLE - Excel schließt sich nach Create
As Designed. Ein mit CreateOleObject erzeugtes Objekt soll sich so verhalten.
Du könntest Excel mit ShellExecute starten und dich dan mittels GetActiveOleObject verbinden. Dann dürfte sich Excel nicht beenden wenn dein Programm sich beendet. |
AW: OLE - Excel schließt sich nach Create
Ich Öffne jetzt mein Excel mit
Delphi-Quellcode:
Das Klappt ja soweit auch.
ShellExecute(Application.Handle,PChar('open'),PChar('Excel'),sParameter,PChar(''),SW_SHOWNORMAL);
Wobei ich jetzt aber meine schwierigkeiten habe, ist wenn ich prüfe ob eine Instanz vorhanden ist und ich die in den Vordergrund holen will kommt bei mir diese Fehlermeldung : Variante referenziert kein Automatisierungsobjekt.
Delphi-Quellcode:
Wie kriege ich excel in den Vordergund?
try
Excel := GetActiveOleObject('Excel.Application'); Excel := Unassigned; Excel.Windowstate := SW_SHOWNORMAL; except Diese Anweisung haut bei Word prima hin. |
AW: OLE - Excel schließt sich nach Create
Überleg mal was die Zeile
Delphi-Quellcode:
für einen Sinn hat.
Excel := Unassigned;
|
AW: OLE - Excel schließt sich nach Create
ohhh
die war eig. auskommentiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz