Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Excel Automation - merkwürdiger Fehler

  Alt 8. Aug 2009, 07:30
Hallo,

wo genau kommt denn der Fehler ?

Zu der Neustart-Sachen.

- Task-Manager
- auf Reiter Prozesse
- nach Excel.Exe suchen und abschiessen
bei mehreren alle Excel.Exe abschiessen
- danach kannst du dein "normales" Excel wieder aufmachen



Ausserdem wäre es schön, wenn du den Quelltext mal anständig formatierst,
man bekommt ja Augenkrebs

Vorschlag
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  vArray : OleVariant;
  WS : OleVariant;
  aRange : Range;
  i : Integer;
  lc : Integer;
  ObjNr : String;
  adr : String;
  temp : String;
begin
  ExcelApplication1.Connect;
  ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);
  ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveSheet as _Worksheet);
  WS := ExcelApplication1.ActiveSheet as _Worksheet;

  If Edit1.Text <> 'then
  begin
    ObjNr := Edit1.Text;
    zeile := 1;
    spalte := 2;

    repeat
      inc(zeile);
    until (WS.Cells.Item[zeile,spalte].Value = ObjNr) or
          (WS.Cells.Item[zeile,spalte].Value = 'xx');

    If (WS.Cells.Item[zeile,spalte].Value = ObjNr) then
    begin
      Edit2.Text := WS.Cells.Item[zeile,4].Value +' '
                    +WS.Cells.Item[zeile,5].Value;
    end
    end
    else
    begin
      If Edit2.Text <> 'then
      begin
        adr := Edit2.Text;
       //zeile := 1;
        spalte := 4;

        repeat
          inc(zeile);
        until (Pos(adr,WS.Cells.Item[zeile,spalte].Value) > 0) or
              (WS.Cells.Item[zeile,spalte].Value = 'xx');

        If (Pos(adr,WS.Cells.Item[zeile,spalte].Value) > 0) then
        begin
          Edit2.Text := WS.Cells.Item[zeile,4].Value +' '
                        +WS.Cells.Item[zeile,5].Value;
          Edit1.Text := WS.Cells.Item[zeile,2].Value;
        end;
      end;
    end;
    Label1.Caption := WS.Cells.Item[zeile,20].Value;

    ExcelWorksheet1.Disconnect;
    ExcelWorkbook1.Disconnect;
    ExcelApplication1.Disconnect;
  end;
Heiko
Heiko
  Mit Zitat antworten Zitat