ich arbeite derzeit an OLE-Automation von Excel mit "Late Binding",
das meiste klappt mittlerweile, jetzt komme ich an einer Stelle aber
einfach nicht weiter da ich die ExcelXP.pas nicht besitze.
Vorweg: nix geht g'scheit mit OLE und EXCEL unter Lazarus 0.9.30.2 (Release)
daher verwende ich - gezwungenermaßen - einen aktuellen Snapshot.
(0.9.31 von 30.11.2011, mit Compiler 2.5.1)
---------------------------------------------------------------------------------------
Code: Alles auswählen
function ExcelSheetAddBottomFrameLine( var Sheet : OleVariant):integer;
var Selection : OleVariant;
Border : OleVariant;
Ole : OleVariant;
begin
// from Excel Macro Recorder :
//
// Selection.Borders(xlDiagonalDown).LineStyle = xlNone
// Selection.Borders(xlDiagonalUp).LineStyle = xlNone
// Selection.Borders(xlEdgeLeft).LineStyle = xlNone
// Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection:= Sheet.Range[ 'A188:O188'].Select; // works !
//Ole:= OleVariant( 'xlEdgeTop');
Ole:= OleVariant( 1);
Border:= Selection.Borders[ Ole]; // => Invalid variant operation
...
...
end;
REM:
Der Funktionsparameter "var Sheet : OleVariant" wird zugewiesen z.B .per
Sheet:= Excel.ActiveWorkbook.Sheets[1]; //ungetestet, Pseudocode ..
--------------------------------------------------------------
Die Zuweisung " Selection:= Sheet.Range[ 'A188:O188'].Select;"
klappt fehlerfrei, danach komme ich nicht weiter.
Die Konstanten xlEdgeTop, xlContinuous etc. kenne ich nicht
und daher schmeißt Excel immer den Fehler "Invalid variant operation"
Kennt jemand Typ + Wertebereich für die oben im Excel-Macro
aufgezeichneten Konstanten ?