![]() |
Excel: Tabellenblatt wechseln
Hallo!
Ich muss aus einer Excel-Datei Daten in mein Programm importieren. Dafür benutze ich folgende Anweisungen:
Delphi-Quellcode:
Das klappt auch wunderbar, sodass alle Daten danach in dem Array of string "Tabelle" sind. Nun muss ich jedoch auch noch Daten vom 2ten Tabellenblatt der Excel-Datei holen. Wie wechsle ich denn nun das Blatt, von dem die Daten gelesen werden?
var
Excel: OleVariant; i,j: integer; begin try Excel := CreateOleObject('Excel.Application'); except MessageDlg('Kein Excel installiert',mtError,[mbOk],0); end; Excel.WorkBooks.Open(Pfad); for i := 1 to 94 do for j := 1 to 16 do Tabelle[i,j] := Excel.ActiveSheet.Cells.Item[i+1,j].value; Excel.Workbooks.Close; Excel.Quit; end; |
Re: Excel: Tabellenblatt wechseln
Delphi-Quellcode:
So aehnlich, oder mit eckigen Klammern ging das. Wenn ich etwas in Office automatiseren moechte, verwende ich den Makro-Rekorder von Excel. Der VB-Code, der dabei generiert wird, kann fast 1 zu 1 in Delphi verwendet werden. Die Hilfe im VisualBasic-Editor ist auch sehr gut.
Excel.ActiveWorkbook.Sheets('TabelleXYZ').Activate
|
Re: Excel: Tabellenblatt wechseln
die verschiedenen tabelenblätter müsstest du auch über die namen ansprechen können!
^^ ok pathfinder war schneller :( |
Re: Excel: Tabellenblatt wechseln
Delphi-Quellcode:
Hab das jetzt mal ausprobiert, aber es kommt beim Laden in der Zeile dann zu einer Fehlermeldung: Mitglied nicht gefunden. Der Name der Tabelle stimmt aber auf jeden Fall!
Excel.ActiveWorkbook.Sheets('Kurse2').Activate;
|
Re: Excel: Tabellenblatt wechseln
Delphi-Quellcode:
Der Makroeditor sagt statt .Activate .Select
Sub Makro1()
' ' Makro1 Makro ' Makro am 30.01.2007 von ... aufgezeichnet ' ' Sheets("Tabelle2").Select End Sub |
Re: Excel: Tabellenblatt wechseln
Ne, auch mit .select kommt die Meldung bei der Zeile.. was sind eigentlich Makros?
|
Re: Excel: Tabellenblatt wechseln
Delphi-Quellcode:
So fkt es bei mir auf jeden Fall. Alternativ kannst auch der Index des Blatts angegeben werden (beginnend bei Index 1):
Excel.ActiveWorkbook.Sheets['Tabelle3'].Select;
Delphi-Quellcode:
Du kannst Excel auch sichtbar machen, mit folgenden Befehl:
Excel.ActiveWorkbook.Sheets[3].Select;
Delphi-Quellcode:
Zu Makros:
Excel.Visible:=true;
Man kann die Befehle auch direkt in Excel aufzeichen; Excel erzeugt daraus ein VisualBasic-Skript, ein sogenanntes Makro. Gehe in Excel auf Extras -> Makro -> Aufzeichnen. Dann mache irgendetwas in Excel, z.B., aendere einen Zelleninhalt - dann druecke die Stopptaste. Gehe unter Extras -> Makro -> Makros und waehle bei dem eben aufgezeichneten Makro "Bearbeiten" aus, es oeffnet sich daraufhin der VisualBasic-Editor mit dem Quellcode. Diesen kannst Du in Delphi nach kleiner Anpassung auf Pascal verwenden. Sollte nur ein Tipp sein, wenn Du z.B. eine Grafik aus Delphi heraus erzeugen moechtest, kann man so die unterstuetzten Befehle von Excel herausfinden. |
Re: Excel: Tabellenblatt wechseln
Ah, sehr gut! Das mit den eckigen Klammern war's!
Dankeschön :thumb: , das hilft mir sehr viel weiter! |
Re: Excel: Tabellenblatt wechseln
jedoch möchte ich dich drauf hin weisen das der try exepct block so nicht richtig arbeiten
Delphi-Quellcode:
sonnst versucht der mit dem nicht Initalisierten Object "excel zu arbeiten, was unweigerlich zu problemen führt.
var
Excel: OleVariant; i,j: integer; begin try Excel := CreateOleObject('Excel.Application'); Excel.WorkBooks.Open(Pfad); for i := 1 to 94 do for j := 1 to 16 do Tabelle[i,j] := Excel.ActiveSheet.Cells.Item[i+1,j].value; Excel.Workbooks.Close; Excel.Quit; except // <- hier muss der hin MessageDlg('Kein Excel installiert',mtError,[mbOk],0); end; end; altanativ ginge natürlich auch
Delphi-Quellcode:
var
Excel: OleVariant; i,j: integer; begin try Excel := CreateOleObject('Excel.Application'); except MessageDlg('Kein Excel installiert',mtError,[mbOk],0); Exit; end; Excel.WorkBooks.Open(Pfad); for i := 1 to 94 do for j := 1 to 16 do Tabelle[i,j] := Excel.ActiveSheet.Cells.Item[i+1,j].value; Excel.Workbooks.Close; Excel.Quit; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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