![]() |
Anzahl der Seiten in Excel festlegen
Hallo,
ich bin am verzweifeln. :wall: Aktuell hänge ich an einem Datenexport nach Excel. Alles funktioniert soweit, jedoch kann ich nicht die Anzahl der genutzten Seiten festlegen. Sowohl hier im Forum, über Google und auch im Excel Makro Rekorder stoße ich immer wieder auf die Zeile
Delphi-Quellcode:
Jedoch passiert hierbei gar nichts. Ich bekomme keine Fehlermeldung vom Programm, aber auch in Excel passiert nichts (sichtbares).
Excel.ActiveSheet.PageSetup.FitToPagesWide := 1;
Nun weiß ich nicht mehr weiter. :gruebel: Zur Veranschaulichung hier ein kurzer Auszug aus dem Code:
Delphi-Quellcode:
procedure Export_nach_Excel;
Const xlBottom = -4107; xlLeft = -4131; xlRight = -4152; xlTop = -4160; Var Excel: Variant; zeile, spalte, i, j, k, Spieler_Anz, Spiel_Anz, farbe : Integer; WBobj: olevariant; Dateiname, s : String; begin try Screen.Cursor:=crHourGlass; Excel := CreateOleObject('Excel.Application'); except ShowMessage('Excel konnte nicht gestartet werden!'); Screen.Cursor:=crDefault; exit; end; Excel.Visible := False; WBobj:= Excel.Application.Workbooks.Add; Excel.Worksheets['Tabelle1'].Activate; Excel.Worksheets['Tabelle1'].Name:='Einzel'; Excel.Worksheets['Tabelle2'].Delete; Excel.Worksheets['Tabelle3'].Delete; Dateiname:=DM.GetSpecialFolder(CSIDL_PERSONAL); If NOT Start.DirExists(Dateiname+'\Mannschaft\') then Start.create_dir(Dateiname+'\Mannschaft\'); Dateiname:=Dateiname+'\Mannschaft\Statistik_'+FormatDateTime('yyyymmdd_hhmm', Now); //Excel Zellen werden gefüllt . . . . //Formatieren des Blattes Excel.ActiveSheet.PageSetup.PaperSize := 9; //A4 Excel.ActiveSheet.PageSetup.Orientation := 2; //Landscape // Fit to X page(s) wide by Y tall Excel.ActiveSheet.PageSetup.Zoom := False; Excel.ActiveSheet.PageSetup.FitToPagesWide := 1; Excel.ActiveSheet.PageSetup.FitToPagesTall := 3; WBobj.Close (saveChanges:=True, FileName:=Dateiname); Excel.Quit; Screen.Cursor:=crDefault; Weiß jemand Rat? |
Re: Anzahl der Seiten in Excel festlegen
Hallo, was für eine Excel Version verwendest du ?
Unter Excel 2002 funktioniert das FitToPagesWide. Noch ein Tipp:
Delphi-Quellcode:
Tabelle1 heisst es nur in der deutschen Version. In der englischen z.B Sheet1.
Excel.Worksheets['Tabelle1'].Activate;
Es ist also besser das Worksheet per Index anzusprechen. Gib am Schluss den Speicher wieder frei:
Delphi-Quellcode:
WBobj := Unassigned;
Excel := Unassigned; |
Re: Anzahl der Seiten in Excel festlegen
Hallo,
Danke für die beiden Tipps. Ich werde es umsetzen. Zitat:
Ältere Versionen habe ich nicht da. |
Re: Anzahl der Seiten in Excel festlegen
Hallo,
@Toms: Zitat:
@Werwurm: Zitat:
Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Hallo Chemiker,
Zitat:
Dafür kann man bei Excel den Zoom einstellen. Entweder auf einen festen Wert, auf die genutzten Seiten. Ein fester Wert hilft mir aber nicht, da mein Export in Zeilen und Spalten variabel ist. Deshalb möchte ich die Druckgröße auf 1 Hoch & 1 Seite Breit einstellen. |
Re: Anzahl der Seiten in Excel festlegen
Hallo Werwurm,
Zitat:
Delphi-Quellcode:
Ist es den möglich, die Einstellungen in Excel vorzunehmen und haben diese Einstellungen das gewünscht Ergebnis?
Excel.ActiveSheet.PageSetup.FitToPagesTall := 3;
Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Hallo Chemiker,
Zitat:
Da habe ich den Wert wieder vergessen auf "1" zurück zu setzen. In meinem Code war es schon wieder korrigiert. Zitat:
Das ganze habe ich in Excel auch schon mit Makro Rekorder aufgenommen. Auch dort finde ich als Quelltext FitToPagesTall. Mache ich das aber mit Delphi, greift es nicht. Es kann eigentlich nur bei mir liegen, ich habe aber keine Ahnung wo. |
Re: Anzahl der Seiten in Excel festlegen
[quote="Chemiker"]Hallo,
@Toms: Zitat:
Delphi-Quellcode:
Excel.Worksheets['Tabelle1'].Activate;
|
Re: Anzahl der Seiten in Excel festlegen
Hallo.
@toms, Du hast Recht, aber wenn der Name nicht Richtig ist, kommt eine Fehlermeldung „ungültiger Index“. Das kann also nicht das Problem sein. @Werwurm: also bei mir funktioniert Dein Code. Gut ich muss den Ausdruck mit der Lupe betrachten, aber er funktioniert. Kannst Du es so einrichten, dass vor dem WBobj.close dir mal in der Seitenansicht ansiehst, ob die Skalierung nach Deinen Wünschen durchgeführt worden ist? Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Zitat:
|
Re: Anzahl der Seiten in Excel festlegen
Hallo Chemiker,
Zitat:
Ich habe den Delphi-Code schrittweise durchlaufen lassen und nach jeder Zeile das Ergebnis in Excel kontrolliert. Das Umstellen auf Papierformat A4, als auch auf Querformat funktionieren wunderbar. Lediglich das FitToPagesTall zeigt keine Wirkung. Verändere ich z.B. den Zoom auf 95% wird das aber wiederum übernommen. Zu dem Tipp mit der Lupe :-D Auf der zweiten Seite befindet sich maximal 1-2 Spalte. Somit ist das kleiner Zoomen kein Problem. Der Ausdruck ist noch mit bloßem Auge und ohne Brille lesbar :-D |
Re: Anzahl der Seiten in Excel festlegen
Hallo toms
alles klar. Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Hallo Werwurm,
ich habe diesen Code verwendet.
Delphi-Quellcode:
Allerdings arbeite ich hier mit Excel 2000. Wenn das tatsächlich ein Excel 2003 Problem ist, kann ich das erst am Montag in der Firma prüfen.
procedure TfrmExcelMain.btnWSNameAendernClick(Sender: TObject);
begin Excel.Worksheets[1].Activate; Excel.Worksheets[1].Name:='Einzel'; Excel.ActiveSheet.PageSetup.PaperSize := 9; //A4 Excel.ActiveSheet.PageSetup.Orientation := 2; //Landscape // Fit to X page(s) wide by Y tall Excel.ActiveSheet.PageSetup.Zoom := FALSE; Excel.ActiveSheet.PageSetup.FitToPagesWide := 1; Excel.ActiveSheet.PageSetup.FitToPagesTall := 1; Excel.visible:= TRUE; end; Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Hallo Chemiker,
ich kann mir kaum vorstellen, das es ein Problem mit Excel 2003 bzw. 2007 ist. Schließlich gilt offensichtlich noch die gleiche Syntax. Wenn Du es bei Dir in der Firma trotzdem testen könntest wäre ich Dir sehr dankbar. Leider habe ich keine ältere Version als 2003 zur Verfügung. Schon mal Vielen Dank :thumb: |
Re: Anzahl der Seiten in Excel festlegen
Hallo Werwurm,
noch 2 Möglichkeiten. 1. Im Task-manager unter Prozesse nachsehen, ob ein noch nicht geschlossener Excel – Prozess läuft. Evt. den Rechner komplett runterfahren um mal den Speicher zu bereinigen. 2. Sicherstellen das das Workbook das Skaliert werden soll auch Aktiviert ist.
Delphi-Quellcode:
Vielleicht das noch mal probieren.
Excel.Worksheets['Einzel'].PageSetup.Zoom := FALSE;
Excel.Worksheets['Einzel'].PageSetup.FitToPagesWide := 1; Excel.Worksheets['Einzel'].PageSetup.FitToPagesTall := 1; Bis bald Chemiker |
Re: Anzahl der Seiten in Excel festlegen
Hallo Chemiker,
Du bist mein Held :lol: Laut Task Manager lief kein Excel Prozess mehr. Da ich schon zwei Tage dabei bin, wurde zwischenzeitlich auch mein PC neu gestartet. Deshalb habe ich Deinen zweiten Vorschlag versucht.
Delphi-Quellcode:
Und siehe da jetzt funktioniert es!
Excel.Worksheets['Einzel'].PageSetup.Zoom := FALSE;
Excel.Worksheets['Einzel'].PageSetup.FitToPagesWide := 1; Excel.Worksheets['Einzel'].PageSetup.FitToPagesTall := 1; Auf die einfachsten Lösungen kommt man meist nicht von alleine... Vielen Dank für Deine Hilfe :thumb: Schönen Sonntag noch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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