Announcement

Collapse
No announcement yet.

Excel-Sheet wechseln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Excel-Sheet wechseln

    Hey,

    ich habe das Problem, daß ich ein Excel-Workbook habe mit mehreren Sheets.
    Leider kann ich kann ich keine funktion finden, die mir erlaubt, ein bestimmtes zum aktiven Sheet zu machen.

    In der Literatur heißt es : Excel.Sheets[1].Activate.

    Nur ist das nicht möglich, wenn Excel := TExcelApplication.Create(self)

    Gibt es einen Weg ??

    danke

    volker

  • #2
    Hallo,

    selbstverständlich gibt es einen Weg ;-)
    <pre>
    type
    TForm1 = class(TForm)
    ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    Button1: TButton;
    ExcelWorksheet1: TExcelWorksheet;
    procedure Button1Click(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;
    ...
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    var
    vFile : OleVariant;
    begin
    vFile := 'C:\Temp\Mappe1.xls';
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[0] := True;
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workboo ks.Open(vFile,False,
    True,EmptyParam, '',False,False, EmptyParam, EmptyParam,
    False, False, EmptyParam, False, 0));

    ExcelWorksheet1.ConnectTo(
    ExcelWorkbook1.Worksheets.Item['Tabelle2'] as _WorkSheet);

    ShowMessage('Test');
    ExcelWorksheet1.Disconnect;
    ExcelWorkbook1.Disconnect;
    ExcelApplication1.Disconnect;
    end;
    </pre&gt

    Comment


    • #3
      Hallo Andreas,

      ich habe es jetzt zwischenzeitlich mit der alten Methode - ohne die ServerKomponenten versucht.

      MsExcel := CreateOleObject('Excel.Application');

      Datei := 'c:\temp\tabe_neu.xls';
      MsExcel.Workbooks.Open( Datei, ...);
      MsExcel.Sheets['Profil'].Activate;
      .
      .
      .
      MsExcel.Sheets['Namen'].Activate;
      .
      und das funktioniert auch.

      Meine Frage ist natürlich jetzt, welchen Vorteil gewinne durch benutzen der ServerKomponenten ?

      Danke

      bis dann

      volke

      Comment


      • #4
        Hallo,

        es sind im wesentlichen 4 Vorteile: <br>
        1. Bessere Performance dank früher Bindung (Dual Interface) <br>
        2. Code-Vervollständigung/Programmierhilfe/Compilerprüfungen von Delphi stehen zur Verfügung. <br>
        3. Die Server-Events können im Objektinspektor konfiguriert werden (Ereignisbehandlungsmethoden).<br>
        4. Dank der überladenen Methoden verringert sich der Einsatz von EmptyParam als Platzhalter

        Comment

        Working...
        X