Hey, wir haben bereits eine Wordkomponente, die zuerst mit Platzhaltern gefüllt werden kann und in einem 2. Schritt kann man bestimmte Platzhalter durch vordefinierte Werte ersetzen lassen.. Allerdings komm ich damit nicht so ganz zurrecht, da die zich Platzhalter dort schon per Schleifen ausgetauscht werden.
Nun wollen wir das auch für Exceldokumente anbieten, also wollte ich es erstmal ganz minimal umsetzen aber es hängt beim Suchen/Ersetzen.
Hier mal mein Quellcode bis zu meinem Problem:
Wie ihr seht sind das erstmal nur kleine Rantaster an die Materie, denn ich hab vorher noch nie damit arbeiten müssen.
Woran ich beim Suchen/Ersetzen scheiter sind die Parameter.
Benutz ich beispielsweise SearchOrder := xlByColumns wirft mir Excel bei diesem Teil die Meldung 'Die Methode 'xlByColumns' wird vom Automatisierungsobjekt nicht unterstützt'. Mein Freund Google wusste darauf mal keine Antwort, deswegen wende ich mich mal an euch.
Was muss ich tun damit ich einen bestimmten String auf einem Blatt oder im gesamten Dokument (über alle Blätter hinweg) ersetzen kann?
Mit freundlichem Gruße
Kev
Nun wollen wir das auch für Exceldokumente anbieten, also wollte ich es erstmal ganz minimal umsetzen aber es hängt beim Suchen/Ersetzen.
Hier mal mein Quellcode bis zu meinem Problem:
Code:
procedure ExcelFuellen; var Excel : Variant; row, column: Integer; begin // Excel Objekt erzeugen Excel := CreateOleObject('Excel.Application'); // Tabellen anlegen Excel.Application.SheetsInNewWorkBook := 2; Excel.Workbooks.Add; // Tabellen umbenennen Excel.Sheets[1].Name := 'Tabelle 1'; Excel.Sheets[2].Name := 'Tabelle 2'; column := 1; // Platzhalter einfügen for row := 1 to 5 do begin Excel.Sheets['Tabelle 1'].Cells[row,column].Value := Form1.Memo1.Lines[row-1]; // in Memo 1 steht ('Wert1:', 'Wert2:', 'Wert3:'... ) Excel.Sheets['Tabelle 1'].Cells[row,column].ColumnWidth := '20,71'; Excel.Sheets['Tabelle 1'].Cells[row,column+1].Value := Form1.Memo2.Lines[row-1]; // in Memo 2 steht ('[IA: Füllwert 1]', '[IA: Füllwert 2]', '[IA: Füllwert 3]'...) Excel.Sheets['Tabelle 1'].Cells[row,column+1].ColumnWidth := '20,71'; end; // Inhalte ersetzen zB um Platzhalter zu füllen Excel.Cells.Replace( What := '[IA: Füllwert 3]', Replacement := 'Test', LookAt := xlPart, SearchOrder := xlByColumns, <<< Hier brichts ab MatchCase := False, SearchFormat := False, ReplaceFormat := False ); // Vorformatierungen Excel.Sheets['Mappe 1'].Cells[1,2].Style := 'Berechnung'; // Zum Schluss öffnen und anzeigen Excel.Visible := true; Excel := unassigned; // Speichern und beenden ohne Excel zu zeigen Excel.ActiveWorkbook.SaveAs('C:\Users\khahn\Desktop\Delphi meets Excel\Test.xlsx'); Excel.Quit; //Beendet Excel Excel := Unassigned; end;
Woran ich beim Suchen/Ersetzen scheiter sind die Parameter.
Benutz ich beispielsweise SearchOrder := xlByColumns wirft mir Excel bei diesem Teil die Meldung 'Die Methode 'xlByColumns' wird vom Automatisierungsobjekt nicht unterstützt'. Mein Freund Google wusste darauf mal keine Antwort, deswegen wende ich mich mal an euch.
Was muss ich tun damit ich einen bestimmten String auf einem Blatt oder im gesamten Dokument (über alle Blätter hinweg) ersetzen kann?
Mit freundlichem Gruße
Kev
Comment