![]() |
Excel beenden
wie kann ich excel beenden ohen das der Savedialog aufgerufen wird?
in der delphi-source download hilfe hab ichs zwar gefudnen aber das mit dem funktionier net ... wo ist denn die komponente überhaupt die da steht ich zitiere(bei mir kommen fehler(uses klausel geht!) oder den rest check ich nicht ganz --- Aus der Delphi-source hilfe Wie kann ich Excel schließen? Eine Application-Variable Excel und eine Integer-Variable LCID, der Sie den Wert GetUserDefaultLCID zugewiesen haben, vorausgesetzt: Frühe Bindung:
Code:
Wenn Sie die D5-Server-Komponenten verwenden, sollten Sie die Verbindung lösen:
{ Uncomment the next line if you want Excel to quit without asking
whether to save the worksheet } // Excel.DisplayAlerts[LCID] := False; Excel.Quit;
Code:
Wenn Sie eine _Application-Interface-Variable verwenden, sollten Sie diese stattdessen auf nil setzen:
Excel.Disconnect;
Delphi-Quellcode:
Späte Bindung:
Excel := nil;
Code:
Beachten Sie jedoch, dass Excel unsichtbar laufend im Hauptspeicher verbleibt, wenn Sie nicht alle Ihre Workbook- und Worksheet-Variablen freigegeben haben. Trennen Sie die Verbindung aller Komponenten (disconnect), setzen Sie alle Interface-Variablen auf nil und setzen Sie Variant-Variablen auf unassigned, um dies zu verhindern.
{ Uncomment the next line if you want Excel to quit without asking
whether to save the worksheet } // Excel.DisplayAlerts := False; Excel.Quit; Excel := Unassigned; |
Re: Excel beenden
Zitat:
|
Re: Excel beenden
das er die befehle quit nicht kennt oder die anderen..
|
Re: Excel beenden
Bitte poste mal den gesamten für uns relevanten Quellcode.
(Oder Demo Projekt zum Testen) |
Re: Excel beenden
Poste bitte mal den entsprechenden Teil deines Quelltextes.
|
Re: Excel beenden
ok
|
Re: Excel beenden
Delphi-Quellcode:
function StringGridToExcelSheet(Grid: TStringGrid; SheetName, FileName: string;
ShowExcel: Boolean): Boolean; const xlWBATWorksheet = -4167; var SheetCount, SheetColCount, SheetRowCount, BookCount: Integer; XLApp, Sheet, Data: OLEVariant; I, J, N, M: Integer; SaveFileName : String; begin //notwendige Sheetanzahl feststellen SheetCount := (Grid.ColCount div 256) + 1; if Grid.ColCount mod 256 = 0 then SheetCount := SheetCount - 1; //notwendige Bookanzahl feststellen BookCount := (Grid.RowCount div 65536) + 1; if Grid.RowCount mod 65536 = 0 then BookCount := BookCount - 1; //Create Excel-OLE Object Result := False; XLApp := CreateOleObject('Excel.Application'); try //Excelsheet anzeigen if ShowExcel = false then XLApp.Visible := False else XLApp.Visible := True; //Workbook hinzufügen for M := 1 to BookCount do begin XLApp.Workbooks.Add(xlWBATWorksheet); //Sheets anlegen for N := 1 to SheetCount - 1 do begin XLApp.Worksheets.Add; end; end; //Sheet ColAnzahl feststellen if Grid.ColCount <= 256 then SheetColCount := Grid.ColCount else SheetColCount := 256; //Sheet RowAnzahl feststellen if Grid.RowCount <= 65536 then SheetRowCount := Grid.RowCount else SheetRowCount := 65536; //Sheets befüllen for M := 1 to BookCount do begin for N := 1 to SheetCount do begin //Daten aus Grid holen Data := VarArrayCreate([1, Grid.RowCount, 1, SheetColCount], varVariant); for I := 0 to SheetColCount - 1 do for J := 0 to SheetRowCount - 1 do if ((I+256*(N-1)) <= Grid.ColCount) and ((J+65536*(M-1)) <= Grid.RowCount) then Data[J + 1, I + 1] := Grid.Cells[I+256*(N-1), J+65536*(M-1)]; XLApp.Worksheets[N].Select; XLApp.Workbooks[M].Worksheets[N].Name := SheetName + IntToStr(N); //Zellen als String Formatieren XLApp.Workbooks[M].Worksheets[N].Range[RefToCell(1, 1), RefToCell(SheetRowCount, SheetColCount)].Select; XLApp.Selection.NumberFormat := '@'; XLApp.Workbooks[M].Worksheets[N].Range['A1'].Select; //Daten dem Excelsheet übergeben Sheet := XLApp.Workbooks[M].WorkSheets[N]; Sheet.Range[RefToCell(1, 1), RefToCell(SheetRowCount,SheetColCount)].Value := Data; end; end; //Save Excel Worksheet try for M := 1 to BookCount do begin SaveFileName := Copy(FileName,1,Pos('.',FileName)-1) + IntToStr(M) + Copy(FileName,Pos('.',FileName), Length(FileName)-Pos('.',FileName)+1); XLApp.Workbooks[M].SaveAs(Filename); end; Result := True; except // Error? end; finally //Excel beenden if (not VarIsEmpty(XLApp)) and (ShowExcel = false) then begin XLApp.DisplayAlerts := False; XLApp.Quit; XLAPP := Unassigned; Sheet := Unassigned; end; end; end; function GenerateUniqueFileName(FileName: String): String; var count: integer; begin if not FileExists(FileName) then begin result := FileName; exit; end; count:=1; while FileExists(ChangeFileExt(FileName, '')+'-'+IntToStr(count)+ ExtractFileExt(FileName)) do Inc(Count); result := ChangeFileExt(FileName,'')+'-'+IntToStr(count)+ExtractFileExt(FileName); end; procedure TForm1.Gewinner(Spieler: String); var i, j : Integer; Data : String; datei : TStringlist; begin LCID := GetUserDefaultLCID ; Datei := TStringlist.Create; Datei.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Spiele\Datei.txt'); for I := 0 to StringGrid1.ColCount - 1 do for J:= 0 to StringGrid1.RowCount - 1 do If Stringgrid1.Cells[i,j] = '' then Stringgrid1.Cells[i,j] := '-'; // Data := GenerateUniqueFileName(ExtractFilePath(ParamStr(0)) + 'Spiele\' +Spieler + 'Sieg'); //StringGrid-Inhalt in Excel exportieren //Grid: StringGrid, SheetName: Stringgrid Print, //Pfad: c:\Test\ExcelFile.xls, Excelsheet anzeigen StringGridToExcelSheet(StringGrid1, Spieler + ' Sieg', ExtractFilePath(ParamStr(0)) + 'Spiele\' +Spieler + 'Sieg' + Datei[0],True); // Excel.Quit; //Excel := Unassigned; Showmessage(Spieler + ' gewinnt'); Label1.caption := 'Spielstand: ' + IntToStr(Pkt1) + ':' + IntToStr(Pkt2); for I := 0 to StringGrid1.ColCount - 1 do for J:= 0 to StringGrid1.RowCount - 1 do Stringgrid1.Cells[i,j] := ''; Zug := 0; Datei[0] := IntToStr(StrToInt(Datei[0])+1); Datei.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Spiele\Datei.txt'); end; |
Re: Excel beenden
Hänge die Source-Datei mit dem Code an, so ist es relativ schwer, den Code zu überschauen und der Beitrag wird relativ lang...
|
Re: Excel beenden
Liste der Anhänge anzeigen (Anzahl: 1)
hmm also weiß das niemand? schade.. hier ist mal der Quelltext!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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