AGB  ·  Datenschutz  ·  Impressum  







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

Problem beim Verwenden von Excel

Ein Thema von diavy · begonnen am 12. Dez 2012 · letzter Beitrag vom 17. Dez 2012
Antwort Antwort
Seite 1 von 3  1 23      
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#1

Problem beim Verwenden von Excel

  Alt 12. Dez 2012, 18:34
Hallo zusammen.

Ich bin gerade dabei ein Programm zu schreiben, das automatisch Resultate eines Sport-Turniers an meiner Schule in eine Excel-Tabelle einträgt.

Da das Programm bereits ziemlich lang ist, poste ich nur den Teil, in dem vermutlich der Fehler liegen sollte:


Delphi-Quellcode:
var
  Form1: TForm1;
  excel: variant;
  index7,index6:array[1..7] of integer;
  index5:array[1..6] of integer;
  index:integer;


procedure TForm1.FormCreate(Sender: TObject);
begin
initiateindexes;
excel:=CreateOleObject('Excel.Application');
Excel.Workbooks.Open('G:\....xlsx');
fillcombo1;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
var i,j:integer;
begin
ComboBox4.Clear;
j:=StrToInt(copy(ComboBox3.Items[ComboBox3.ItemIndex],2,1)); //Bestimmung der Klasse inngerhalb eines Jahrganges, dient zur Orientierung in der Mappe
case StrToInt(copy(ComboBox3.Items[ComboBox3.ItemIndex],1,1)) of //Unterscheidet die Jahrgänge
        7: begin
                i:=0;
                Excel.ActiveWorkbook.Sheets['7eme'].Select;
                index:=index7[j];
                while Excel.Cells[(index+i),2].Value <> 'do
                        begin
                        ComboBox4.Items.Add(Excel.Cells[(index+i),2].Value+' '+Excel.Cells[(index+i),3].Value);//die beiden Zellen-Werte sind Name und Vorname alle Mitschüler einer Klasse
                        inc(i);
                        end;
                end;
6:...
5:...
end;
Nachdem ich ein Objekt in der ComboBox3 ausgewählt habe, bekomme ich die Fehlermeldung:
'exception class EVariantError with message: 'Invalid variant type conversion'

Wenn ich dann wieder F9 drücke, kann ich das Programm weiterbenutzen, und in der ComboBox4 befinden sich die korrekten Objekte. Falls ich dann aber wieder was in der ComboBox3 ändere, geht der Spaß wieder von vorne los.

Ich habe auch schon versucht das '.Value' wegzulassen, da ich auch mehrmals den Befehl Excel.Cells[..,..] im Internet ohne das .Value gesehen habe, dies hat jedoch nichts erbracht.

Es wäre sehr nett wenn mir jemand helfen könnte, da ich noch viel zu tun habe, wenig erfahren bin, und unter zeitdruck stehe.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Problem beim Verwenden von Excel

  Alt 12. Dez 2012, 23:27
Statt ComboBox3.Items[ComboBox3.ItemIndex] könnte man auch einfach ComboBox3.text nehmen. Ist aber nicht der Fehler, denke ich.
Ob mit oder ohne .Value sollte normalerweise egal sein, da das auch die Standard Eigenschaft einer Zelle ist.

Ich würde mir mal einen Haltepunkt in die Funktion setzen und sehen, an welcher Codezeile genau der Fehler kommt.
Ralph
  Mit Zitat antworten Zitat
hoika

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

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 06:19
Hallo,

benutze lieber Range statt Cells.
Hier noch ein Link:
http://www.delphipraxis.net/37480-ex...rnsteuern.html

Heiko
Heiko

Geändert von hoika (13. Dez 2012 um 06:23 Uhr)
  Mit Zitat antworten Zitat
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#4

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 18:17
Wie gesagt, ich hab es auch schon mit und ohne .Value versucht und weder noch hat mir zum Erfolg verholfen.

Ich war bestimmt schon 2 Stunden damit beschäftigt Teile in {} zu setzen oder SendMessage(' ') an mehreren Stellen einzubauen, komischerweiser bekomme ich jedoch immer eine Fehlermeldung.

Danke für den Tip mit Range, aber da ich nun schon recht viel geschrieben habe, ändere ich dies nun nicht mehr, da es sofern ich es richtig verstehe "nur" zur Esthetik beiträgt. Ich verhalt's mir für's nächste Mal.

Hat sonst wer eine Idee woran es liegen könnte?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 18:33
Ich würde mir mal einen Haltepunkt in die Funktion setzen und sehen, an welcher Codezeile genau der Fehler kommt.
Hast Du den Vorschlag von Jumpy schon gemacht und den Haltepunkt in der Funktion ComboBox3Change in die erste Zeile gesetzt ? Dann kannst Du mit F7 oder F8 jede Zeile der Funktion nacheinander durchgehen. Dabei ermittelst Du dann auch die Zeile, in welcher der Fehler auftritt.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#6

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 20:34
Ich dachte er hätte mit seinem Vorschlag eine ähnliche Methode wie die von mir aufgezählten gemeint (zB an bestimmten Stellen SendMessage('') einbauen). Was eine Haltestelle ist, ist mir unbekannt.

Jedoch habe ich wie von dir erwähnt mich mit F7 durchgeklickt, und die Fehlermeldung kam, nach mehrfachem Durchgehen bei:
 while Excel.Cells[(index+i),2].Value <> 'do Kann es sein, dass die Schleife klappt, wenn die Zelle einen Inhalt hat, jedoch nicht klappt wenn sie keinen Inhalt hat? Dies scheint mir nämlich bezüglich des Ergebnises der Fehlersuche mit F7 am sinnvollsten. Wenn ja, wie kann ich dieses Problem umgehen?
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 20:35
Hallo diavy,

Excel.Cells[(index+i),2].Value es ist zu beachten, dass die Excel-Cells –Index bei 1 anfängt. Ist sichergestellt das (index+i) min. 1 ist?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#8

AW: Problem beim Verwenden von Excel

  Alt 13. Dez 2012, 20:42
Hallo!

Ja, der geringstmöglichste index-Wert beträgt 6.

Edit: Ich glaube http://www.delphipraxis.net/140578-l...cel-zelle.html hier hatte wer ein ähnliches/das selbe Problem. Wenn ich die erwähnten Zeichen (‘’) anstatt von '' in die while-Schleife einfüge, gibt mir Delphi die Fehlermeldung (bereits vor dem Starten des Programmes) : "Illegal character in input file". Was hat es damit auf sich?

Geändert von diavy (13. Dez 2012 um 21:25 Uhr)
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#9

AW: Problem beim Verwenden von Excel

  Alt 14. Dez 2012, 09:42
Versuch mal das:

Delphi-Quellcode:
while (NOT Empty(Excel.Cells[(index+i),2])) do
  begin
    ...
  end;

function Empty(const s: String): Boolean;
// Überprüfen, ob ein String leer ist:
begin
  // Siehe hier:
  // http://www.delphipraxis.net/169312-wie-string-auf-leer-pruefen.html#post1174321
  Result := Trim(s) = '';
end;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

AW: Problem beim Verwenden von Excel

  Alt 14. Dez 2012, 13:24
Hallo,

 while Excel.Cells[(index+i),2].Value <> 'do
Das '' ist kein Variant. Versuche es bitte einmal mit  while Excel.Cells[(index+i),2].Value <> EmptyParam do EmptyParam ist ein "leerer" Variant, gfls. musst du noch die Unit Variants in die Uses-Klausel aufnehmen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:07 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