Autor Beitrag
PreMarT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Fr 11.12.09 12:07 
Hallo alle zusammen,

hab da mal wieder ein kleinen Problem.

Und zwar möchte ich das Ende meiner Xls Datei herausfinden also nach welcher Zeile nix mehr kommt, ich hab es mit Rows.Count probiert aber da gibt der mit 65536 aus also die Max Zeilen eines Sheets...
Wenn man in Excel mit dem Scrollbar runter fährt bleibt er ja bei der letzten Zeile stehen, wenn man nciht mit PageDown oder den Pfeiltasten weiter runter fährt...Diese Zeile brauch ich

Hat jemand ne Idee?

bin für jeden Vorschlag dankbar :)

mfg

PMT
Andreas Schilling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: Fr 11.12.09 13:05 
Zeilenzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
PreMarT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Fr 11.12.09 14:12 
Also falls ich falsch verstanden wurde^^ denn der Code geht irgendwie nciht und verstehen tu ich ihn noch weniger :/

hab im moment

ausblenden Delphi-Quelltext
1:
MaxZeilen := XLSheet.Rows.Count //--> da bekomm ich 65536 oder sowas raus...					


brauch jetzt nen Befehl wo ich die Zeilenanzahl bekomm nach der nichts mehr kommt...

mfg
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 11.12.09 14:46 
user profile iconPreMarT hat folgendes geschrieben Zum zitierten Posting springen:
denn der Code geht irgendwie nciht

Wie war noch gleich die Fehlermeldung?

_________________
PROGRAMMER: A device for converting coffee into software.
Andreas Schilling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: Fr 11.12.09 14:51 
Ok, das ist die Variante für Makros in Excel selber gewesen.
ausblenden Delphi-Quelltext
1:
  MaxZeilen := XLSheet.Cells(Rows.Count, 1).End(xlUp).Row;					


Normalerweise kann man es fast 1:1 in Delphi verwenden. Eventuell noch etwas rumexperimentieren.
PreMarT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Fr 11.12.09 15:06 
wenn ich den Code so übernehme kommt Operator oder Simikolon fehlt...
wenn ichd en code etwas umschreibe kommen sehr skurile fehler
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 11.12.09 15:16 
"skurrile Fehler", tolle Aussage..
Poste doch mal den Code, wie du ihn "etwas verändert" hast, und welcher "skurile Fehler" dabei kommt.

_________________
PROGRAMMER: A device for converting coffee into software.
PreMarT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Fr 11.12.09 15:25 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
iMaxZeilen := XLSheet.Cells(Rows.Count, 1).End(xlUp).Row; //  Operator oder Semikolon fehlt

iMaxZeilen := XLSheet.Cells.Rows.Count.End(xlUp).Row; //  Record, Objekt oder Klassentyp erforderlich

iMaxZeilen := XLSheet.Cells.Item[XLSheet.Rows.Count, 1].End(xlUp).Row; // Exception: 'Mitglied nicht gefunden'


Das Problem ist ist weis nicht wie ich den Code ändern soll...und was jetzt der post bringen soll weis ich net...entweder man weis wie es geht und kann mir helfen oder man weis es nicht dann brauch ich auch nix zu posten...
Versteh ja nciht mal den Code der gepostet wurde... :/ wie soll cih den dann umschreiben?
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 11.12.09 15:54 
user profile iconPreMarT hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
iMaxZeilen := XLSheet.Cells(Rows.Count, 1).End(xlUp).Row; //  Operator oder Semikolon fehlt

iMaxZeilen := XLSheet.Cells.Rows.Count.End(xlUp).Row; //  Record, Objekt oder Klassentyp erforderlich

iMaxZeilen := XLSheet.Cells.Item[XLSheet.Rows.Count, 1].End(xlUp).Row; // Exception: 'Mitglied nicht gefunden'


Das Problem ist ist weis nicht wie ich den Code ändern soll...und was jetzt der post bringen soll weis ich net...entweder man weis wie es geht und kann mir helfen oder man weis es nicht dann brauch ich auch nix zu posten...
Versteh ja nciht mal den Code der gepostet wurde... :/ wie soll cih den dann umschreiben?


Mal nicht soviel Panik machen. Wenn du schreibst was du für Fehler bei welchen Versuchen bekommst dann kann man damit arbeiten. Mit einem Posting wie

Zitat:

wenn ich den Code so übernehme kommt Operator oder Simikolon fehlt...
wenn ichd en code etwas umschreibe kommen sehr skurile fehler


dagegen nicht. Was für dich skurile Fehler sind, sind für andere Programmierer eventuell nützliche Hinweise.

PS: Probier mal
ausblenden Delphi-Quelltext
1:
    iMaxZeilen := app_Excel.workbooks[1].sheets[1].Cells[app_Excel.workbooks[1].sheets[1].Rows.Count, 1].End[xlUp].Row;					


das sollte gehen. Meist sind es die runden Klammern die Delphi nicht so mag , Delphi mags lieber eckig ;)

und zur Info
ausblenden Delphi-Quelltext
1:
var app_excel : Variant;					


weiss ja nicht von was dein Typ XLSheet ist, hast du ja leider nicht dazugepostet.

und noch was xlUp ist einen Integerkonstante!

ausblenden Delphi-Quelltext
1:
xlUp = -4162;					

_________________
mfg. Joel
PreMarT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Fr 11.12.09 16:00 
@Andreas Schilling

Danke für den Code :)

@JoelH

Danke für die Übersetzung sowie Nachhilfe :)

Es funktioniert... aber ich weis leider immernoch nicht ganz wie der Code zusatande kommt...

wenn es vielleicht noch wer kommentieren mag :)

ansonsten geb ich mich acuh mit dem Ergebnis zu frieden..

Danke nochmal

mfg

PMT
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 11.12.09 16:21 
Also wenn du bei Excel etwas automatisieren willst, dann bietet sich folgende Vorgehensweise an. Du startet Excel und wählst Extras/Makros/Aufzeichnen.

Dann machst du dann was dein Makro für dich machen soll. Danach beendest du die Aufzeichnung und schaust was im Erzeugten Makro steht. Das kann man dann relativ 1:1, mit ein paar Einschränkungen, einfach nach Delphi transferieren und fertig ist die Fernsteuerung.


Dein Code hier geht IMHO (bin nicht ganz sicher ;) ) hin und geht runter bis zur letzten Tabellenzeile. Das macht dieser Teil

Cells(Rows.Count, 1)

dann simuliert er ein STRG-Pfeil nach Oben. Das sollte der Teil End(xlUp) sein. und das Row gibt wohl dann die entsprechende Ziele zurück auf der du dann stehst.

Aber das kann die Andreas Schilling wahrscheinlich besser erläutern, also kein Gewähr auf das was ich geschrieben habe, ich hab das nur anhand des Codes geschlussfolgert.

_________________
mfg. Joel
PreMarT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 57

Work: Win XP ; Home: Win Vista 64-Bit

BeitragVerfasst: Mo 11.01.10 14:44 
Jetzt nach paar Wochen musste ich feststellen das die Lösung doch nciht ganz Wasserdicht war, hab mal ein bisschen rumprobiert und einen 100% sauberen Befehl gefunden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
// erstes WorkBook auswählen
XLBk := XLApp.WorkBooks.Item[1];
// erstes WorkSheet definieren
XLSheet := XLBk.WorkSheets.Get_Item(1as _Worksheet;

F_iMaxZeilen:= XLSheet.Cells.Item[1,1].SpecialCells[xlLastCell].Row ;
F_iMaxSpalten:= XLSheet.Cells.Item[1,1].SpecialCells[xlLastCell].Column ;


MFG

BG