AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel: Tabellenblatt wechseln

Ein Thema von LiS · begonnen am 30. Jan 2007 · letzter Beitrag vom 31. Jan 2007
Antwort Antwort
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#1

Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 19:38
Hallo!

Ich muss aus einer Excel-Datei Daten in mein Programm importieren. Dafür benutze ich folgende Anweisungen:

Delphi-Quellcode:
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;
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?
  Mit Zitat antworten Zitat
pathfinder78

Registriert seit: 5. Jul 2005
7 Beiträge
 
#2

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 19:52
Excel.ActiveWorkbook.Sheets('TabelleXYZ').Activate 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.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 19:53
die verschiedenen tabelenblätter müsstest du auch über die namen ansprechen können!

^^ ok pathfinder war schneller
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 20:09
Excel.ActiveWorkbook.Sheets('Kurse2').Activate; 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!
  Mit Zitat antworten Zitat
pathfinder78

Registriert seit: 5. Jul 2005
7 Beiträge
 
#5

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 20:16
Delphi-Quellcode:
Sub Makro1()
'
' Makro1 Makro
' Makro am 30.01.2007 von ... aufgezeichnet
'

'
Sheets("Tabelle2").Select
End Sub
Der Makroeditor sagt statt .Activate .Select
  Mit Zitat antworten Zitat
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 20:42
Ne, auch mit .select kommt die Meldung bei der Zeile.. was sind eigentlich Makros?
  Mit Zitat antworten Zitat
pathfinder78

Registriert seit: 5. Jul 2005
7 Beiträge
 
#7

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 21:11
Excel.ActiveWorkbook.Sheets['Tabelle3'].Select; So fkt es bei mir auf jeden Fall. Alternativ kannst auch der Index des Blatts angegeben werden (beginnend bei Index 1):
Excel.ActiveWorkbook.Sheets[3].Select; Du kannst Excel auch sichtbar machen, mit folgenden Befehl:
Excel.Visible:=true; Zu Makros:
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.
  Mit Zitat antworten Zitat
LiS

Registriert seit: 3. Dez 2004
87 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Excel: Tabellenblatt wechseln

  Alt 30. Jan 2007, 21:38
Ah, sehr gut! Das mit den eckigen Klammern war's!
Dankeschön , das hilft mir sehr viel weiter!
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Excel: Tabellenblatt wechseln

  Alt 31. Jan 2007, 06:54
jedoch möchte ich dich drauf hin weisen das der try exepct block so nicht richtig arbeiten

Delphi-Quellcode:
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;
sonnst versucht der mit dem nicht Initalisierten Object "excel zu arbeiten, was unweigerlich zu problemen führt.

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;
Thorben
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz