Toon posts:

[Delphi, OLE Excel] Plaatje in een cel zetten.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers,
ik heb in mijn programma als uitvoer een excel file.

Het genereren van het workbook en de worksheets gaat goed.
Alleen wil ik nu een plaatje in een cell invoegen en ik weet niet het moet.

Ik heb gezocht in de search en kon niks vinden.
Ik heb ook gekeken op internet, vond wel allerlei dingen om Excel te

automatiseren.
Maar niets over plaatjes invoegen.

Kan iemand mij hiermee helpen ??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Kan je het wel met VBA in excel zelf? Misschien is dat de eerste stap waar je je op moet concetreren. Het vertalen naar Delphi is dan stap twee.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Even geprobeerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
uses
  Excel97;

procedure TForm1.Button1Click(Sender: TObject);
var
  EApp: ExcelApplication;
  EWb: ExcelWorkbook;
  EWs: ExcelWorksheet;
  Pics: Pictures;
begin
  EApp:=CoExcelApplication.Create;
  EWb:=ExcelWorkbook(IUnknown(OleVariant(EApp).Workbooks.Add));
  EWs:=ExcelWorksheet(IUnknown(OleVariant(EWb).Worksheets.Add));
  Pics:=Pictures(IUnknown(OleVariant(EWs).Pictures));
  OleVariant(Pics).Insert('C:\WinNT\WinNT256.bmp');
  OleVariant(EApp).Visible:=True;
end;

Werkt perfect (Delphi 5).

De reden dat ik alles converteer van het object zelve naar OleVariants en vervolgens naar IUnknown en weer vervolgens naar het Object-type is omdat ik anders alllerlei parameters mee moet geven die voor het voorbeeld niet van belang zijn. OleVariant kan rechtstreeks naar IUnknown gecast worden als deze een OLE object bevat en vervolgens kunnen we weer van IUnknown naar ons gewenste object type casten.

Trouwens nog een tipje voor verdere MS Office automatisering via OLE/COM:
In het menu Extra kun je middels Macro's een macro opnemen. Deze kun je vervolgens bewerken en hier komt VBA-code uit; deze geeft heel vaak hele nuttige info (zo ook het invoegen van een plaatje!).

Veel suc6 verder.

Verwijderd

Topicstarter
Hartstikke bedank !!!

ik zal het eens proberen

(ik gebruik zelf ook Delphi 5)