![]() |
Excel paste mutiple cellls from clipboard
Delphi-Quellcode:
ERROR 1:
Excel := CreateOleObject('Excel.Application');
Excel.Workbooks.Add; Excel.Cells[1,1].Paste; // ERROR 1 Excel.SaveAs(APath + AFilename + '.xlsx'); // ERROR 2 Excel.Workbook.Close; Excel.Quit; In der Zwischenablage befindet sich ein Text mit etlichen Tab-separierten Zellen und CR-separierten Zeilen. Manuell kann ich die Zelle A1 anclicken und Bearbeiten-Einfügen (Ctrl-V) machen und Excel fügt alles perfekt ein. Wie lautet der passende Befehl, um dies per OLE zu machen? ERROR 2: Wie speichert man das aktuelle Workbook unter einem neuen Namen ab? "SaveAs" wäre naheliegend gewesen, geht aber leider nicht. (beide Male die Fehlermeldung: 'Die Methode 'XXX' wird vom Automatisierungsobjekt nicht unterstützt'.) Ich möchte nacheinander eine Vielzahl von Excel-Dateien automatisiert erzeugen. Dazu neue Workbook erzeugen, Daten von Delphi aus kopieren und abspeichern, dann schließen. Bonusfrage: Kann man einfach feststellen, ob Excel schon vor Beginn offen ist und man dann das Quit sich spart, weil der Nutzer es vielleicht noch weiter offen haben will? Danke im voraus! |
AW: Excel paste mutiple cellls from clipboard
Sieh Dir die VBA-Hilfe von Excel an, da ist alles dokumentiert was das Objektmodell anbietet.
Neben CreateOLEObject gibt es auch ein ![]() |
AW: Excel paste mutiple cellls from clipboard
Hallo,
Bonusfrage: Das kann man machen, sollte man aber nicht. Wenn Excel über ein Programm gesteuert wird, sollte ausschließlich die Steuerung beim Programm liegen, ohne das der Benutzer manuell eingreifen kann.
Delphi-Quellcode:
Mit diesem Code kann man die Zwischenablage nach Excel importieren.
var
DateiName: TFileName; oEXCEL: OLEVariant; begin try oEXCEL := CreateOleObject('Excel.Application'); except ShowMessage('Excel ist nicht geöffnet !'); Exit; end; oEXCEL.Workbooks.add; oEXCEL.Visible:= TRUE; // Die Daten werden ab der Zelle B1 eingefügt oEXCEL.range['B1','B1'].Select; // Daten aus der Zwischenablage nach Excel importieren oEXCEL.ActiveSheet.Paste; // Neuer Dateiname; gegebenfalls sind Schreibrechte zu beachten DateiName:='C:\Users\Internet\Documents\KopieTest.xlsx'; // Datei abspeichern oEXCEL.ActiveWorkbook.SaveAs(Filename:=DateiName); if NOT VarIsEmpty(oEXCEL) then begin oEXCEL.ActiveWorkBook.Saved:= TRUE; oEXCEL.Quit; oEXCEL:= Unassigned; end; Bis bald Chemiker |
AW: Excel paste mutiple cellls from clipboard
Vielen lieben Dank! Das hat großartig funktioniert!
Klasse! |
AW: Excel paste mutiple cellls from clipboard
Es gibt auch fertige Komponenten, die schön nach Excel exportieren.
DevExpress-Grids: direkt in eine Daen, ohne das Excel installiert sein muß (wenn ich mich nicht irre) FastReports: aber da muß xcel installiert sein OK, Delphi bringt auch alles mit. (nur den CSV-Import muß man nicht kopieren ... ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 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