Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel starten geht/geht nicht (https://www.delphipraxis.net/96310-excel-starten-geht-geht-nicht.html)

ml2 22. Jul 2007 09:56


Excel starten geht/geht nicht
 
Hallo,

ich hänge fest. Habe Delph5 Professional und Excel starten funktioniert eigentlich mit folgendem Code über ein Form mit Button problemlos.

In dem Programm, wo ich es nutzen will, gibt es allerdings die Fehlermeldung "Variante referenziert kein Automatisierungsobjekt" bei CreateOLEObject.

Hat jemand einen Tip woran geht/geht nicht liegen könnte? Projekt-/compiler- und Linkereinstellungen scheinen identisch zu sein.

Markus


Code:
function EXCELStarten (var my_EXCEL : OLEVariant): boolean;
{erfordert in uses: comobj}
begin
   try
    my_EXCEL := CreateOLEObject('Excel.Application');
    Result := TRUE;
  except
    ShowMessage('Excel konnte nicht gestartet werden!');
    Result := FALSE;
    Exit
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Excel : OLEVariant;
begin
  EXCELStarten(Excel);  // muß wg OLE-Object auf jeden Fall (evtl. zusätzlich) gestartet werdem
  Excel.Visible := TRUE;          
end;

Chemiker 22. Jul 2007 12:03

Re: Excel starten geht/geht nicht
 
Hallo ml2,

herzlich willkommen in der DP.

Ich kann anhand Deiner Angaben nur raten. Besser währe den Code zu zeigen der nicht funktioniert.

Ich vermute einfach das Du die UNIT: comobj nicht eingebunden hast.

Bis bald Chemiker

jmit 22. Jul 2007 13:42

Re: Excel starten geht/geht nicht
 
Hallo,

hast Du schon einmal bei dsdt.info geschaut.

Dort habe ich folgendes gefunden, welches mir auch schon weitergeholfen hat: Excel

Gruß Jörg

ml2 23. Jul 2007 06:30

Re: Excel starten geht/geht nicht
 
Zitat:

Zitat von Chemiker
Ich vermute einfach das Du die UNIT: comobj nicht eingebunden hast.

Ne, ist eingebunden, sonst würde Delphi ja schon in der Codeprüfung/Compilierung meckern und nicht erst bei der Ausführung.

Markus

ml2 23. Jul 2007 06:33

Re: Excel starten geht/geht nicht
 
Zitat:

Zitat von jmit
Dort habe ich folgendes gefunden, welches mir auch schon weitergeholfen hat: Excel

Danke,
sehe ich mir heute abend mal an.

Markus

Chemiker 23. Jul 2007 06:43

Re: Excel starten geht/geht nicht
 
Hallo,

ich rate einfach weiter wie siehst mit der Unit : Excel_TLB aus, auch eingebunden?

Bis bald Chemiker

ml2 23. Jul 2007 06:52

Re: Excel starten geht/geht nicht
 
Zitat:

Zitat von Chemiker
ich rate einfach weiter

viel mehr als Raten bleibt bei dem Problem ja leider nicht.

Zitat:

Zitat von Chemiker
unit : Excel_TLB ... eingebunden?

Die kennt mein Delphi nicht.

Danke
Markus

Chemiker 23. Jul 2007 19:23

Re: Excel starten geht/geht nicht
 
Hallo ml2,

vielleicht ist es ja doch möglich den Code zu zeigen der nicht funktioniert, dann müsste man nicht raten und Du könntest sofort an Deinem Programm weiter arbeiten.

Mein letzter Versuch:

Kann es sein das Du Excel in eine Procedure oder Function aufrufst und dabei das var vergessen hast?

Delphi-Quellcode:
function EXCELStarten (my_EXCEL : OLEVariant): boolean; // Vor my_EXCEL muss ein var stehen.
Bis bald Chemiker

ml2 23. Jul 2007 19:40

Re: Excel starten geht/geht nicht
 
Zitat:

Zitat von Chemiker
Kann es sein das Du Excel in eine Procedure oder Function aufrufst und dabei das var vergessen hast?

Delphi-Quellcode:
function EXCELStarten (my_EXCEL : OLEVariant): boolean; // Vor my_EXCEL muss ein var stehen.

Ei Chemiker,

oben in meiner Anfrage steht der Code, incl. "var" :hello: Den habe ich genau so vom Ein-Button-Formular in meine Anwendung übernommen und es geht nicht. In der Anwendung gibt es keine Geheimnisse, aber in der betreffenden Extra-Unit eben nicht viel mehr als obigen Code, der über einen Button aufgerufen wird und dann nichts anderes machen soll, als die Inhalte der Edit-Felder nach Excel zu schieben, nachdem Excel und die entsprechende Datei geöffnet wurden. Nur brauch ich nicht weiter zu machen, wenn Excel gar nicht zu starten ist.

Aber trotzdem Danke
Gruß Markus

Chemiker 23. Jul 2007 20:27

Re: Excel starten geht/geht nicht
 
Hallo ml2,

natürlich kann man Edit – Felder nach Excel schieben, aber Du hast irgendwo in Deinem Code ein Fehler. Ohne nähere Informationen kann man Dir nur schwer weiter helfen.

Hier noch einmal ein Beispiel:

Delphi-Quellcode:
unit ExcelMitEditFelderFuellenUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,comobj, OleServer, ExcelXP;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function EXCELStarten (var my_EXCEL : Variant): boolean;
{erfordert in uses: comobj}
begin
   try
    my_EXCEL := CreateOLEObject('Excel.Application');
    Result := TRUE;
  except
    ShowMessage('Excel konnte nicht gestartet werden!');
    Result := FALSE;
    Exit
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Excel : Variant;
begin
  EXCELStarten(Excel);  // muß wg OLE-Object auf jeden Fall (evtl. zusätzlich) gestartet werdem
  Excel.Visible := TRUE;
  Excel.Application.Workbooks.Add; // Neue Arbeitsmappe öffnen in EXECL
  Excel.Worksheets ['Tabelle1'].Activate;
  Excel.cells[1,1]:= Edit1.Text;  // <------ Text
  Excel.cells[1,2]:= strtofloat(Edit2.Text); // <------- Zahl
  Excel.Quit;
end;

end.

Bis bald Chemiker

ml2 23. Jul 2007 20:45

Re: Excel starten geht/geht nicht
 
Hallo Chemiker,

hier
Zitat:

my_EXCEL := CreateOLEObject('Excel.Application');
gibt es doch schon den Ausstieg, d.h. zur Laufzeit die Fehlermeldung "Variante referenziert kein Automatisierungsobjekt", dann kann ich

Zitat:

Excel.Visible := TRUE;
Excel.Application.Workbooks.Add; // Neue Arbeitsmappe öffnen in EXECL
Excel.Worksheets ['Tabelle1'].Activate;
Excel.cells[1,1]:= Edit1.Text; // <------ Text
Excel.cells[1,2]:= strtofloat(Edit2.Text); // <------- Zahl
Excel.Quit;
erst mal zurückstellen. Wobei ein ähnlicher Code mit dem Ein-Button-Formular funktioniert, d.h. ich konnte bereits die ganze Zeit ins Arbeitsblatt schreiben (in Excel 2007), nur eben nicht in der Anwendung, weil da die Fehlermeldung "Variante ..." kommt

Strange ist auch ein neuer Test mit der Komponente ExcelApplication.
Connect bringt im Ein-Button-Formular zumindest keinen Crash in meiner Anwendung (Excel startet, aber unsichtbar nur im Taskmanager zu sehen), es crasht aber in meiner Anwendung mit der Fehlermeldung "Colnitialize wurde nicht aufgerufen".

Das ganze stammt noch aus Zeiten von Delphi 1/2. Vielleicht sind da noch - mittlerweile vergessene - Altlasten drin.

Wenn mich das noch lange ärgert, schreibe ich es in eine Textdatei, und lese es in Excel mit einem Makro ein.

Gruß Markus
(übrigens in Deiner Altersklasse)

Chemiker 23. Jul 2007 21:42

Re: Excel starten geht/geht nicht
 
Hallo ml2,

versuch den Rechner mal runter zu fahren und neu zu starten, vielleicht ist er etwas
durcheinander gekommen. Wenn Du eine neue Projekt-Datei öffnest und das Beispiel ablaufen lässt funktioniert das?
Geh das ganze doch mal mit F7 durch, vielleicht tritt der Fehler ja auch später auf.

Bis bald Chemiker

ml2 13. Sep 2007 20:36

Re: Excel starten geht/geht nicht
 
Zitat:

Das ganze stammt noch aus Zeiten von Delphi 1/2. Vielleicht sind da noch - mittlerweile vergessene - Altlasten drin.
Das war das Problem, zu damaligen Zeiten hat Delphi in den Projekt-Quelltext noch nicht

Delphi-Quellcode:
Application..Initialize
geschrieben. Laut Hilfe: "Initialize stellt eine Möglichkeit dar, Subsysteme, wie z.B. die OLE-Automatisierung, zu initialisieren."

Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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