Entwickler-Ecke
Dateizugriff - Excel Rows.Count !?! Zeilen Zählen
PreMarT - Fr 11.12.09 12:07
Titel: Excel Rows.Count !?! Zeilen Zählen
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 - Fr 11.12.09 13:05
Zeilenzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
PreMarT - 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
Delphi-Quelltext
1:
| MaxZeilen := XLSheet.Rows.Count |
brauch jetzt nen Befehl wo ich die Zeilenanzahl bekomm nach der nichts mehr kommt...
mfg
Xentar - Fr 11.12.09 14:46
PreMarT hat folgendes geschrieben : |
| denn der Code geht irgendwie nciht |
Wie war noch gleich die Fehlermeldung?
Andreas Schilling - Fr 11.12.09 14:51
Ok, das ist die Variante für Makros in Excel selber gewesen.
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 - 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 - 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.
PreMarT - Fr 11.12.09 15:25
Delphi-Quelltext
1: 2: 3: 4: 5:
| iMaxZeilen := XLSheet.Cells(Rows.Count, 1).End(xlUp).Row; iMaxZeilen := XLSheet.Cells.Rows.Count.End(xlUp).Row; iMaxZeilen := XLSheet.Cells.Item[XLSheet.Rows.Count, 1].End(xlUp).Row; |
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 - Fr 11.12.09 15:54
PreMarT hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5:
| iMaxZeilen := XLSheet.Cells(Rows.Count, 1).End(xlUp).Row; iMaxZeilen := XLSheet.Cells.Rows.Count.End(xlUp).Row; iMaxZeilen := XLSheet.Cells.Item[XLSheet.Rows.Count, 1].End(xlUp).Row; |
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
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
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!
PreMarT - 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 - 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.
PreMarT - 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.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| XLBk := XLApp.WorkBooks.Item[1]; XLSheet := XLBk.WorkSheets.Get_Item(1) as _Worksheet;
F_iMaxZeilen:= XLSheet.Cells.Item[1,1].SpecialCells[xlLastCell].Row ; F_iMaxSpalten:= XLSheet.Cells.Item[1,1].SpecialCells[xlLastCell].Column ; |
MFG
BG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!