Hallo zusammen,
ich habe da ein Problem, dessen Ursache mir nicht so ganz klar ist. Es geht um das Einfügen von Text aus einer Excel-Tabelle in ein StringGrid. Das ganze soll einfach über die Zwischenablage mittels Copy & Paste erfolgen. Ist Teil eines größeren Programmes, dass bei uns auf der Arbeit eingesetzt wird.
Folgender Code funktioniert bei mir zuhause (Win7 64bit, Excel 2010) exakt so wie ich mir das vorstelle:
Delphi-Quellcode:
procedure PasteFromClipboard(Grid : TStringGrid;ACol, ARow : Integer);
var s,t,u : String;
x,y,xx : Integer;
begin
xx:=Grid.Col; x:=xx; y:=Grid.Row;
s := Clipboard.AsText;
t:=''; u:='';
while s <> '' do
begin
t := copy(s, 1, pos(#13, s)-1);
delete(s, 1, pos(#13, s) + 1);
while t <> '' do
begin
if pos(#9,t)>0 then
begin
u := copy(t, 1, pos(#9, t)-1);
delete(t, 1, pos(#9, t));
end
else
begin
u:=t; t:='';
end;
if (x<Grid.ColCount) and (y<Grid.RowCount) then
Grid.Cells[x,y]:=u;
inc(x);
end;
inc(y);
x:=xx;
end;
end;
Auch auf der Arbeit (da hab ich WinXP, Office 2003) klappt das bestens.
Bei einer Arbeitskollegin, die das Programm benutzt (Win7 64 bit, Office 2010) funktioniert das ganze jedoch aus irgendwelchen Gründen nicht. Bei ihr wird offenbar der gesamte Text in eine einzelne Zelle kopiert, bei ansonsten (scheinbar) identischen Ausgangsbedingungen. Dummerweise bräuchte gerade sie die Funktion aber (es geht da um Dienstplanerstellung).
Am Code kann es eigentlich nicht liegen. Am ehesten wäre anzunehmen, das die Formatierung der Daten, die Excel ans Clipboard übergibt, sich unterscheiden. Aber wie gesagt, zuhause bei mir funktioniert das ganze, mit den (scheinbar) gleichen Systemvoraussetzungen (d.h. Win7 64 bit + Office 2010).
Hat da jemand eine zündende Idee?
Danke für Eure Bemühungen,
Bernhard