Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeile in eine Excel Tabelle einfügen (https://www.delphipraxis.net/118084-zeile-eine-excel-tabelle-einfuegen.html)

Andreas Leix 31. Jul 2008 08:38


Zeile in eine Excel Tabelle einfügen
 
Hallo !
Ich will in eine Excel Tabelle an einer bestimmten Stelle eine Zeile einfügen.
Habe dazu schon die gleich lautende Anfrage in diesem Forum gefunden.
Leider komm ich mit dem Antwort-Hinweis nicht zu recht.

Ich habe ein WorkSheet WS und will in der 25. Zeile eine Zeile einfügen.

"WS.Row(25).insert (...) " läßt sich nicht compilieren.

kann mir jemand mit einem kleinen Code-Schnipsel weiterhelfen ?
Danke !


Gruß
Andreas

mkinzler 31. Jul 2008 08:42

Re: Zeile in eine Excel Tabelle einfügen
 
Lass dir die Aktion als Makro aufzeichnen. Der Zugriff über COM erfolgt synchron

Chemiker 31. Jul 2008 08:44

Re: Zeile in eine Excel Tabelle einfügen
 
Hallo Andreas Leix,

an welcher Stelle kommst Du denn nicht weiter?

OLE - Grundlagen

Bis bald Chemiker

Andreas Leix 31. Jul 2008 09:18

Re: Zeile in eine Excel Tabelle einfügen
 
Hey, ihr seid aber schnell !


Wenn ich mir im excel ein Markro aufzeichnen lasse, kommt folgendes raus

Sub Makro1()
'
' Makro1 Makro
'
Rows("25:25").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

Das Statement Rows("12:12").Select kann ich so nicht in Delphi übernehmen.

Wenn ich mir ein Worksheet in einem Dokument hole

Delphi-Quellcode:
 WS:= Excel.Sheets[intSheet] as _WorkSheet;
dann klappt das. Das Worksheet habe ich also.

Aber eine Programmzeile

Delphi-Quellcode:
  WS.Rows('25:25').select;
läßt sich nicht compilieren. ( Fehler : "Operator oder Semikolon fehlt" )

Auch
Delphi-Quellcode:
 WS.Rows[25,25].select;
wird nicht compiliert. ( Fehler: "Klasse besitzt keine Standard Eigenschaft" )


Wie kann ich syntaktisch korrekt eine bestimmte Zeile in einem Worksheet selektieren.

mkinzler 31. Jul 2008 10:00

Re: Zeile in eine Excel Tabelle einfügen
 
Was für einen Typ hat WS?

Andreas Leix 31. Jul 2008 10:17

Re: Zeile in eine Excel Tabelle einfügen
 
Deklaration von WS

Delphi-Quellcode:
var WS: _WorkSheet;

mkinzler 31. Jul 2008 10:32

Re: Zeile in eine Excel Tabelle einfügen
 
Delphi-Quellcode:
S.Rows.Item(25,25).Select;

Chemiker 31. Jul 2008 11:25

Re: Zeile in eine Excel Tabelle einfügen
 
Hallo Andreas Leix,

funktioniert mkinzler´s Lösung?

Sonst könntest Du noch diese Zeile probieren,

Delphi-Quellcode:
WS.Rows.Range['a4','a4'].Insert(2);   // An der 4 Zeile eine neue Zeile einfügen.
Wobei ich nicht sicher bin, ob die Zahl hinter Insert richtig ist, weil ich auf dem PC zurzeit kein Excel habe.

Bis bald Chemiker

Andreas Leix 31. Jul 2008 11:49

Re: Zeile in eine Excel Tabelle einfügen
 
Hallo !
Erstmal Danke für eure Hilfe!
Die von mkinzler vorgeschlagene Lösung hat nach kleiner Modifikation soweit mal funktioniert.
Eine Zeile läßt sich markieren mit :
Delphi-Quellcode:
WS.Rows.Item[intZeile,emtpyParam].select;
Der Witz war der zweite Parameter emptyParam. (Von den eckigen Klammern mal abgesehen ;-) )
Man kann sehen,das das funktioniert, wenn man das Dokument danach im Ecxel anschaut, ist genau die richtige Zeile markiert.
Danach ruf ich
Delphi-Quellcode:
WS.Rows.Insert ( xlDown, xlFormatFromLeftOrAbove );
auf.

Da bekomm ich zu Laufzeit aber eine Fehlermeldung:
"Ausgefüllte Zellen können nicht über das Arbeitsblatt hinaus verschoben werden, ...."

Ech komisch !
Der Witz vom Einfügen ist ja gerade, dass alles was danach kommt eine Zeile weiter rutscht und das Blatt größer wird.
Es scheint also so, dass rein syntaktisch/ole-mäßig die insert Funktion schon richtig aufgerufen wird,
aber ... weiß der Geier was !
Liegt´s etwa an den Aufrufparametern von insert, die ich angegeben habe ?
Ich probier´s jetzt mal mit dem Vorschlag vom Chemiker.

Gruß
Andreas

Andreas Leix 31. Jul 2008 12:13

Re: Zeile in eine Excel Tabelle einfügen
 
Hallo Chemiker !
Dein Vorschlag hat funktioniert !!!
Klasse Danke !!
So hats geklappt:
Delphi-Quellcode:
WS.Rows.Range['A'+inttoStr(intZeile),'A'+intToStr(intZeile)].Insert( xlDown, xlFormatFromLeftOrAbove );
So werden tatsächlich ohne Murren Zeilen eingefügt!!
Super !
Danke !

So, jetzt mach ich mich dran und versuch mal einen Bereich auch wieder rauszulöschen...


Gruß
Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 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