![]() |
Re: Die letzte gefüllte Zeile finden
Code:
so funktionierts!
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, ExcelXP, COmObj; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; ExcelApplication1: TExcelApplication; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } function ermittleLetzteSpalteDerExcelDatei(dateiname: string): Integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then ShowMessage(IntToStr(ermittleLetzteSpalteDerExcelDatei(OpenDialog1.FileName))); end; function TForm1.ermittleLetzteSpalteDerExcelDatei(dateiname: string): Integer; var myExcel, sheet: OLEVariant; zeile: Integer; begin if dateiname <> '' then begin try // Create Excel-OLE Object myExcel := CreateOleObject('Excel.Application') except ShowMessage('Excel konnte nicht gestartet werden!'); exit end; // Excel verbergen myExcel.Visible := false; // Öffnen der gewählten Arbeitsmappe myExcel.Workbooks.Open(dateiname); // Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet := myExcel.Workbooks[ExtractFileName(dateiname)].WorkSheets[1]; // In order to know the dimension of the WorkSheet, i.e the number of rows // and the number of columns, we activate the last non-empty cell of it Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; //myExcel.ActiveCell.Row; Result := myExcel.ActiveCell.Row; // Excel wieder schließen myExcel.DisplayAlerts := False; myExcel.Quit; myExcel := Unassigned; Sheet := Unassigned; end; end; end. auf dem formular ein OpedDialog und ein Button platzieren! lg marcus |
Re: Die letzte gefüllte Zeile finden
Habe den Code jetzt so abgeändert, da die Excel-Datei schon bekannt, geöffnet und in Gebrauch ist. Die Fehlermeldung lautet:
Ungültiger Index.
Delphi-Quellcode:
var
myExcel, sheet: OLEVariant; zeile: Integer; begin myExcel := CreateOleObject('Excel.Application'); // Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet := myExcel.Workbooks[ExtractFilePath(ParamStr(0))+'Mappe1.xls'].WorkSheets[1]; // In order to know the dimension of the WorkSheet, i.e the number of rows // and the number of columns, we activate the last non-empty cell of it Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; //myExcel.ActiveCell.Row; Result := myExcel.ActiveCell.Row; // Excel wieder schließen myExcel.DisplayAlerts := False; myExcel.Quit; myExcel := Unassigned; Sheet := Unassigned; end; |
Re: Die letzte gefüllte Zeile finden
an wen wendest du dich jetzt @DJ-SPM?
|
Re: Die letzte gefüllte Zeile finden
Achso, du weist das ja nicht... sunshine-girl ist meine Freundin. Ich war bei ihr und habe unter ihrem namen gepostet. Wir haben also die ganze Zeit miteinander geredet.
Habe es jetzt nochmal so probiert:
Delphi-Quellcode:
aber da kommt nur eine Zugriffsverletzung... Ich dreh bald durch
var myExcel:OleVariant;
begin myExcel := CreateOleObject('Excel.Application'); ExcelWorksheet1.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; ShowMessage(IntToStr(myExcel.ActiveCell.Row)); |
Re: Die letzte gefüllte Zeile finden
hat sonst keiner eine Idee?
|
Re: Die letzte gefüllte Zeile finden
Sorry, dass ich schon wieder pushe, aber ich brauche gaaanz dringend Hilfe. Bitte verzeiht mir das mal!
|
Re: Die letzte gefüllte Zeile finden
So,
nachdem ich noch ein bissl probiert habe, kam ich zu folgendem Code:
Delphi-Quellcode:
Doch hier sagt er "Ungütliger Index" und markiert die fett gedruckte Zeile im Code!
procedure TForm4.Button4Click(Sender: TObject);
const xlCellTypeLastCell = $0000000B; var myExcel, sheet:OleVariant; a:Integer; begin myExcel := CreateOleObject('Excel.Application'); [b]Sheet:=myExcel.Workbooks[ExtractFileName(ParamStr(0))+('Mappe1.xls')].Worksheet[1];[/b] a:=Sheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate; ShowMessage(IntToStr(a)); end; |
Re: Die letzte gefüllte Zeile finden
moin,
ist nur mal so geraten: hast dus schon mal mit Worksheet[0] probiert? soll ja vorkommen, das der Index bei 0 anfängt und das ist ja hier der einzige Index weit und breit. |
Re: Die letzte gefüllte Zeile finden
wird nicht funktionieren....
in excel beginnt der index immer bei 1: egal ob zelle, worksheet, dateiname (mappe1.xls).... :wink: |
Re: Die letzte gefüllte Zeile finden
also damit ich richtig verstehe: du hast excel bereits geöffnet und auch eine gefüllte Mappe geladen?
oder willst du excel öffnen unter angabe einer datei und daraus was laden bzw die letzte zeile angeben lassen? was willst du denn überhaupt damit machen wenn man fragen darf? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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