Hi,
I'm trying to interact with MS Word.
I started with the example from the wiki, but I'm getting errors and problems.
Here's my code:
procedure TForm1.GridToWordTable;
const
ServerName = 'Word.Application';
var
Server: Variant;
begin
DebugLn('GridToWordTable A');
DebugLn(' Assigned(InitProc) = ',DbgS(Assigned(InitProc)));
if Assigned(InitProc) then TProcedure(InitProc);
Try
Try
Server := GetActiveOleObject(ServerName);
DebugLn(' Found a running MS Word object');
Except
DebugLn(' Dit not find a running MS Word object, trying to
create one ...');
Server := CreateOleObject(ServerName);
end;
Except
DebugLn(' Error creating ',ServerName);
Exit;
end;
Try
DebugLn(' Found or created ',ServerName);
Server.Visible := True;
Server := Unassigned;
Except
On E: Exception do
begin
DebugLn('GridToWordTable raised exception:');
DebugLn(' Class = ',E.ClassName);
DebugLn(' Message = ',E.Message);
end;
end;
DebugLn('GridToWordTable End');
end;If I run this it always ouputs this, wether or not I have an active MS Word running at the time.
F:\LazarusProjecten\UurCodes>uurcodes
GridToWordTable A
Assigned(InitProc) = False
Dit not find a running MS Word object, trying to create one ... Found or created Word.Application
GridToWordTable raised exception:
Class = EOleException
Message = Visible is geen verwijzingseigenschap.
GridToWordTable End
The end result is a non visible MS Word object:
ProcessID Naam
FFC7052B E:\PROGRAMMA'S\OFFICE 2000\OFFICE\WINWORD.EXE
which can only be closed by killing it (in TaskManager) (In taskmanager on XP it is listed as a process, not as an application, not sure if this is relevant)
If I run the same code in Delphi 3 it runs just fine. If Word is running it says it has found it, if not it creates and makes visible.
I compiled with fpc 2.2.2 / Lazarus 0.9.27 (SVN)
I have MS Word 2000 and I've tested my code on WinMe and XP, both behave the same.
So I have two questions:
1) why does GetActiveOleObject not "find" a running MS Word instance?
2) why can't i do Server.Visible := true in fpc?
I'm really not looking forward to having to develop this (small and simple) app with Delphi 3, because I've grown fond of the Lazarus IDE's capabilities.
Bart
