Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphi 7 und MS Excel (https://www.delphipraxis.net/52078-delphi-7-und-ms-excel.html)

ColdFire 23. Aug 2005 15:06


Delphi 7 und MS Excel
 
Ich habe ein problem und zwar bekomme ich einen fehler wenn ich mein excel sheet aufmachen will was ist da falsch bzw wie mach ich es richtiger ???


Delphi-Quellcode:
      if OpenDialog.Execute then
        begin
          fileName:= OpenDialog.Filename;
          ExcelApplication.Connect;

          if fileName > '' then
            begin
              ExcelApplication.Workbooks.Open(fileName,EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,0);

ExcelWorkbook.ConnectTo(ExcelApplication.Workbooks.Open(fileName, emptyParam, emptyParam,                                                                                    emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,                                                                  emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,                                                                  0));                              
            end
          else
            ExcelApplication.Workbooks.Add(fileName,0);

          ExcelWorksheet.Disconnect;
        end;

Edit*** FehlerCode: OLE-Fehler 8000A03EC ***Edit Ende

mfg im voraus !ColdFire

[edit=alcaeus]Kraftausdruck im Titel entfernt. Mfg, alcaeus[/edit]

omata 23. Aug 2005 19:31

Re: Delphi 7 und MS Excel
 
Moin,

du must die LCID übergeben (und nicht einfach 0!)

lcid:=GetUserDefaultLCID;

MfG
Thorsten

Jens Schumann 23. Aug 2005 20:18

Re: Delphi 7 und MS Excel
 
Hallo,
probiere es mal so:

Delphi-Quellcode:
procedure TForm1.CloseExcel;
begin
  ExcelWorksheet.Disconnect;
  ExcelWorkbook.Disconnect;
  ExcelApplication.AskToUpdateLinks[FLCID]:=True;
  ExcelApplication.Quit;
  ExcelApplication.Disconnect;
end;

procedure TForm1.OpenExcel;
begin
  FLCID:=GetUserDefaultLCID;
  ExcelApplication.Connect;
  ExcelApplication.Visible[FLCID] := True; // False wenn Excel unsichtbar sein soll
  ExcelApplication.UserControl := True;   // False wenn Excel unsichtbar sein soll
  ExcelApplication.DisplayAlerts[FLCID]:=False;
  ExcelApplication.AskToUpdateLinks[FLCID]:=False;
end;

if OpenDialog.Execute then
        begin
          fileName:= OpenDialog.Filename;
         

          if fileName > '' then
            begin
              ExcelApplication.Workbooks.Open(fileName,EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,
                                                 EmptyParam, EmptyParam, EmptyParam,FLCID);

          else
            ExcelApplication.Workbooks.Add(EmptyParam,FLCID);
  ExcelWorkbook.ConnectTo(ExcelApplication.ActiveWorkBook);
  ExcelWorksheet.ConnectTo(ExcelWorkbook.Sheets.Item['Tabelle1'] as _WorkSheet);      
        end;
FLCID ist ein privates Feld des Formulars.
Mit OpenExcel Excel starten und mit CloseExcel Excel schließen und beenden.

ColdFire 24. Aug 2005 08:34

Re: Delphi 7 und MS Excel
 
***EDIT***

DANKEEEEEEE ! ich liebe dieses FORUM !!

***EDIT ENDE***


THX 4 helping

semo 14. Apr 2010 07:24

Re: Delphi 7 und MS Excel
 
Kleine Anmerkung noch von mir:
anstatt
Delphi-Quellcode:
ExcelWorksheet.ConnectTo(ExcelWorkbook.Sheets.Item['Tabelle1'] as _WorkSheet);
sollte man lieber
Delphi-Quellcode:
ExcelWorksheet.ConnectTo(ExcelApplication.ActiveWorkbook.ActiveSheet as _WorkSheet);
verwenden. Denn wenn der Anwender Office in einer anderen Sprache installiert hat, sieht es bei einem Zugriff auf das Worksheet mit der Bezeichnung "Tabelle 1" schlecht aus :-)

Turbo78 25. Apr 2010 23:28

Re: Delphi 7 und MS Excel
 
Zitat:

Zitat von semo
Kleine Anmerkung noch von mir:
anstatt
Delphi-Quellcode:
ExcelWorksheet.ConnectTo(ExcelWorkbook.Sheets.Item['Tabelle1'] as _WorkSheet);
sollte man lieber
Delphi-Quellcode:
ExcelWorksheet.ConnectTo(ExcelApplication.ActiveWorkbook.ActiveSheet as _WorkSheet);
verwenden. Denn wenn der Anwender Office in einer anderen Sprache installiert hat, sieht es bei einem Zugriff auf das Worksheet mit der Bezeichnung "Tabelle 1" schlecht aus :-)

Zwe Fragen eines Excel Anfängers:
1. Wie kann ich auf das Sheet zugreifen, wenn ich die Namen nicht kenne, weis aber, dass das Sheet an der dritten stelle steht? Wie greife ich auf das Sheet mit dem bestimmten Namen zu?
2. Wie greife ich auf ein Feld des ausgewählten Sheets zu?

Danke in Voraus
Toni

Chemiker 26. Apr 2010 07:05

Re: Delphi 7 und MS Excel
 
Hallo Turbo78,

es wird nicht gerne gesehen mehre Fragen in einem Beitrag zu stellen, weil dadurch die Suche im Forum erschwert wird.

1. Es ist möglich dem Tabellenblatt einen Index mit zu geben, dadurch braucht man keinen Namen mehr.
2. Beim Zugreifen wird dieser Index dem Tabellenblatt mitgegeben.
3. Zusätzlich ist es auch möglich den Arbeitsmappen einen Index mitzugeben, es könnten ja mehre Arbeitsmappen auf sein.

Bis bald Chemiker

p80286 26. Apr 2010 13:07

Re: Delphi 7 und MS Excel
 
(Excel-Hilfe)
Zitat:

Sheets
Mehrere Objekte


Eine Auflistung aller Blätter in der angegebenen oder aktiven Arbeitsmappe. Die Sheets-Auflistung kann Chart-oder Worksheet-Objekte enthalten.

Über die Sheets-Auflistung können Blätter eines beliebigen Typs zurückgegeben werden. Sollten Sie nur mit Blättern eines bestimmten Typs arbeiten, lesen Sie unter dem betreffenden Blattyp nach.
.....
Verwenden Sie Sheets(index), wobei index der Name oder die Indexnummer des Blattes ist, um ein einzelnes Chart- oder Worksheet-Objekt zurückzugeben. Im folgenden Beispiel wird das Blatt "Sheet1" aktiviert

Gruß
K-H

Turbo78 26. Apr 2010 16:49

Re: Delphi 7 und MS Excel
 
Zitat:

Zitat von Chemiker
Hallo Turbo78,

es wird nicht gerne gesehen mehre Fragen in einem Beitrag zu stellen, weil dadurch die Suche im Forum erschwert wird.

1. Es ist möglich dem Tabellenblatt einen Index mit zu geben, dadurch braucht man keinen Namen mehr.
2. Beim Zugreifen wird dieser Index dem Tabellenblatt mitgegeben.
3. Zusätzlich ist es auch möglich den Arbeitsmappen einen Index mitzugeben, es könnten ja mehre Arbeitsmappen auf sein.

Bis bald Chemiker

Es tut mir Leid - es liegt an meiner Unerfahrenheit.

Also, ich habe es geschafft mit folgenden Code ein Sheet zu adressieren und den Wert einer Zelle einzulesen. Danke allen beteiligten.

Zitat:

try
ExcelWorksheet.ConnectTo(ExcelApplication.ActiveWo rkbook.Worksheets[3] as _WorkSheet);
ShowMessage(IntToStr(ExcelWorksheet.Cells.Range['A9', EmptyParam].Value2));
except
Close;
end;


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